:root{--bg: #14100d;--bg-soft: #1c1611;--panel: #201912;--card: #261e15;--card-hover: #2d2418;--border: #3a2f20;--border-soft: #2c2418;--text: #f3ead9;--text-soft: #cbbfa9;--muted: #9a8c75;--accent: #e8a33d;--accent-2: #d97f2e;--good: #57b46c;--bad: #e06c5a;--warn: #d8a94e;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--radius: 12px;--radius-sm: 8px;--font: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--map-area: #221a12;--map-border: #4a3c28;--map-emphasis: #33261a;--map-tooltip-bg: rgba(20, 16, 12, .92);--map-tooltip-border: #3a2f20;--map-tooltip-text: #f3ead9;--map-label: #cbbfa9;--map-label-emph: #f3ead9;--map-gray: #8a7c6b}html[data-theme=light]{--bg: #f7f2ea;--bg-soft: #efe7db;--panel: #fffdf9;--card: #ffffff;--card-hover: #fbf4e8;--border: #e3d7c3;--border-soft: #ece2d1;--text: #2c2117;--text-soft: #5c4e3c;--muted: #97876f;--accent: #b96b1e;--accent-2: #9a5615;--good: #2f8f4c;--bad: #c94f3d;--warn: #a87717;--shadow: 0 8px 24px rgba(120, 90, 40, .12);--map-area: #efe4d0;--map-border: #d6c3a3;--map-emphasis: #f8efdf;--map-tooltip-bg: rgba(255, 253, 249, .97);--map-tooltip-border: #e3d7c3;--map-tooltip-text: #2c2117;--map-label: #7c6b52;--map-label-emph: #2c2117;--map-gray: #a08f74}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}#app{min-height:100vh;display:flex;flex-direction:column}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-2)}button{font-family:var(--font);border:none;cursor:pointer;background:none;color:inherit}.app-header{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;padding:10px 18px;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-soft)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;white-space:nowrap}.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--accent-2));display:grid;place-items:center;color:#fff;font-size:16px}.brand small{display:block;font-weight:400;font-size:11px;color:var(--muted)}.nav{display:flex;gap:4px;margin-left:6px}.nav a{padding:6px 12px;border-radius:8px;color:var(--text-soft);font-size:14px;transition:background .15s,color .15s}.nav a:hover{background:var(--card);color:var(--text)}.nav a.active{background:var(--card);color:var(--accent);font-weight:600}.spacer{flex:1}.search-trigger{display:flex;align-items:center;gap:8px;padding:7px 14px;border-radius:10px;background:var(--card);border:1px solid var(--border-soft);color:var(--muted);font-size:13px;min-width:200px;transition:border-color .15s}.search-trigger:hover{border-color:var(--accent)}.search-trigger kbd{margin-left:auto;padding:1px 6px;border-radius:5px;background:var(--bg-soft);border:1px solid var(--border-soft);font-size:11px;color:var(--muted)}.icon-btn{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--text-soft);border:1px solid var(--border-soft);background:var(--card);transition:border-color .15s,color .15s}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.page{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:18px}.stat-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.stat{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--radius);padding:10px 16px;min-width:110px}.stat .num{font-size:22px;font-weight:700;color:var(--accent);line-height:1.2}.stat .lbl{font-size:12px;color:var(--muted)}.section-title{font-size:16px;font-weight:700;margin:20px 0 10px;display:flex;align-items:center;gap:8px}.section-title:before{content:"";width:4px;height:16px;border-radius:2px;background:var(--accent)}.card{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px;transition:transform .15s,border-color .15s,box-shadow .15s}.card.clickable{cursor:pointer}.card.clickable:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow)}.grid{display:grid;gap:14px}.grid-3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-2{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.badge.good{background:color-mix(in srgb,var(--good) 18%,transparent);color:var(--good)}.badge.bad{background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad)}.badge.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}.badge.soft{background:var(--bg-soft);color:var(--muted);border:1px solid var(--border-soft)}.badge.accent{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.chip{padding:4px 12px;border-radius:20px;font-size:13px;background:var(--card);border:1px solid var(--border-soft);color:var(--text-soft);cursor:pointer;transition:all .15s}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.input,.search-input{width:100%;padding:9px 12px;border-radius:10px;background:var(--card);border:1px solid var(--border-soft);color:var(--text);font-family:var(--font);font-size:14px;outline:none}.input:focus,.search-input:focus{border-color:var(--accent)}.row-list{display:flex;flex-direction:column;gap:8px}.row-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--card);border:1px solid var(--border-soft);cursor:pointer;transition:border-color .15s,transform .15s}.row-item:hover{border-color:var(--accent);transform:translate(2px)}.row-item .idx{color:var(--muted);font-size:12px;width:24px;text-align:right}.map-wrap{position:relative;height:calc(100vh - 130px);min-height:520px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border-soft);background:var(--bg-soft)}#map{width:100%;height:100%}.map-legend{position:absolute;left:12px;bottom:12px;z-index:5;background:color-mix(in srgb,var(--panel) 90%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border-soft);border-radius:10px;padding:10px 12px;font-size:12px;color:var(--text-soft)}.map-legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0006}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:61;width:min(420px,100vw);background:var(--panel);border-left:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;animation:slideIn .22s ease}@keyframes slideIn{0%{transform:translate(30px);opacity:0}to{transform:none;opacity:1}}.drawer-head{padding:16px 18px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:10px}.drawer-body{flex:1;overflow:auto;padding:14px 18px}.img-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.img-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;border:1px solid var(--border-soft);cursor:zoom-in;transition:transform .15s}.img-grid img:hover{transform:scale(1.02)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#000000e6;display:grid;place-items:center;cursor:zoom-out}.lightbox img{max-width:92vw;max-height:92vh;border-radius:8px}.search-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;justify-content:center;align-items:flex-start;padding:9vh 16px 16px;background:#00000080}.search-box{width:min(640px,100%);background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.search-box input{width:100%;padding:15px 18px;font-size:16px;background:transparent;border:none;outline:none;color:var(--text);border-bottom:1px solid var(--border-soft);font-family:var(--font)}.search-results{max-height:60vh;overflow:auto}.sr-group{padding:8px 14px 4px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.sr-item{display:flex;align-items:center;gap:10px;padding:9px 16px;cursor:pointer;font-size:14px}.sr-item.active,.sr-item:hover{background:var(--card)}.sr-item .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-item .s{font-size:12px;color:var(--muted);white-space:nowrap}.sr-empty{padding:30px;text-align:center;color:var(--muted)}.hero{display:grid;gap:16px;margin-bottom:16px}@media (min-width: 700px){.hero{grid-template-columns:300px 1fr}}.hero img{width:100%;border-radius:var(--radius);border:1px solid var(--border-soft)}.food-row{display:grid;grid-template-columns:1fr;gap:8px;padding:14px 0;border-bottom:1px dashed var(--border-soft)}@media (min-width: 720px){.food-row{grid-template-columns:220px 1fr}}.food-row .name{font-size:16px;font-weight:700}.food-row .meta{font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px}.food-row .rev{font-size:14px;color:var(--text-soft)}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:14px}.kv dt{color:var(--muted)}.kv dd{color:var(--text)}.empty{text-align:center;color:var(--muted);padding:40px 0}.app-footer{padding:20px;text-align:center;font-size:12px;color:var(--muted);border-top:1px solid var(--border-soft)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px}::-webkit-scrollbar-track{background:transparent}@media (max-width: 640px){.brand small{display:none}.search-trigger{min-width:0;flex:1}.search-trigger kbd{display:none}.map-wrap{height:calc(100vh - 120px);min-height:420px}.page{padding:12px}}
