@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500&family=Inter:wght@400;500&display=swap");:root{--bg:#15130f;--surface:#211e18;--surface-2:#2a261f;--line:#3a352c;--ink:#f5f0e8;--ink-muted:#a89e8d;--amber:#e8732c;--green:#22c55e;--radius:16px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,sans-serif;font-weight:400;height:100%;overscroll-behavior:none}.display,h1,h2,h3{font-family:Space Grotesk,system-ui,sans-serif}button{font-family:inherit;font-weight:400;cursor:pointer}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;position:relative}.topbar{position:absolute;top:0;left:0;right:0;z-index:500;background:hsla(0,0%,100%,.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;height:calc(56px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}.topbar-icon{width:24px;height:24px;display:block;filter:invert(1)}.map-wrap{flex:1 1;position:relative}#map{position:absolute;inset:0;background:var(--bg)}.leaflet-container{background:#1a1812;font-family:Inter,system-ui,sans-serif}.leaflet-tile-pane{filter:brightness(2.5) contrast(2.2) saturate(.6)!important}.leaflet-popup-content{margin:0!important}.leaflet-popup-content-wrapper{background:#fff;color:#000;border-radius:8px;border:none;box-shadow:0 8px 32px rgba(0,0,0,.2);padding:0;overflow:hidden}.leaflet-popup-tip{background:#fff}.leaflet-popup-close-button{width:32px!important;height:32px!important;background:#f2f2f2!important;border-radius:50%!important;top:10px!important;right:10px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:16px!important;line-height:1!important;color:#444!important;padding:0!important;text-decoration:none!important}.venue-pin{position:relative;width:160px;height:48px;cursor:pointer}.pin-dot{bottom:4px;width:10px;height:10px;background:var(--green);border-radius:50%}.pin-dot,.pin-label{position:absolute;left:50%;transform:translateX(-50%)}.pin-label{top:2px;display:none;background:#fff;border-radius:4px;padding:4px 12px;font-size:12px;font-weight:400;white-space:nowrap;color:#111;box-shadow:0 2px 10px rgba(0,0,0,.2);line-height:1.3;text-align:center;max-width:156px}.pin-label .pin-pct{font-size:12px;font-weight:400;color:var(--green)}.pin-label .pin-name{display:block;font-size:12px;font-weight:400;color:#555;overflow:hidden;text-overflow:ellipsis;max-width:130px}.map-zoomed-in .pin-label{display:block}.map-zoomed-in .pin-dot{width:6px;height:6px;bottom:5px}.user-dot{width:16px;height:16px;border-radius:50%;background:#ef4444;border:3px solid #fff;box-shadow:0 0 0 4px rgba(239,68,68,.25)}.bottombar{position:absolute;left:0;right:0;bottom:0;z-index:500;padding:12px 14px max(14px,env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(21,19,15,.95),rgba(21,19,15,0));display:flex;flex-direction:column;gap:10px}.alert-card{background:var(--surface);border:1px solid rgba(34,197,94,.4);border-radius:8px;padding:14px 16px;display:flex;align-items:center;gap:12px;animation:slideUp .25s ease;text-decoration:none;color:inherit}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.alert-card .badge{flex-shrink:0;width:38px;height:38px;border-radius:8px;background:rgba(34,197,94,.15);color:var(--green);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:400}.alert-card .body{flex:1 1;min-width:0}.alert-card .title{font-weight:400;font-size:12px;margin:0 0 2px}.alert-card .desc{font-size:12px;color:var(--ink-muted);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions-row{display:flex;gap:8px}.btn{flex:1 1;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:100px;padding:14px;font-size:12px;font-weight:400;display:flex;align-items:center;justify-content:center;gap:6px}.btn.filter{background:#fff;border-color:#ddd;color:#000}.btn.filter.active{background:#fff;border-color:#000;color:#000;border-width:2px}.btn:active{transform:scale(.97)}.search-btn{position:absolute;left:14px;width:40px;height:40px;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 10px rgba(0,0,0,.25);color:#000;font-size:16px;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto}.search-btn:active{transform:scale(.95)}.search-overlay{position:absolute;inset:0;z-index:900;background:rgba(0,0,0,.4)}.search-panel{background:#fff;border-radius:0 0 16px 16px;overflow:hidden;animation:slideDown .18s ease}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.search-input-row{display:flex;align-items:center;gap:8px;padding:calc(12px + env(safe-area-inset-top)) 14px 12px;border-bottom:1px solid #eee}.search-icon-inner{font-size:14px;color:#999;flex-shrink:0}.search-input{flex:1 1;border:none;outline:none;font-size:15px;font-weight:400;color:#000;background:transparent;font-family:inherit}.search-input::placeholder{color:#aaa}.search-close{background:#f0f0f0;border:none;border-radius:50%;width:28px;height:28px;font-size:14px;color:#555;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.search-status{padding:14px 16px;font-size:13px;color:#999;text-align:center}.search-results{max-height:50vh;overflow-y:auto}.search-result-item{padding:13px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer;display:flex;flex-direction:column;gap:2px}.search-result-item:active{background:#f9f9f9}.result-name{font-size:14px;color:#000;font-weight:400}.result-sub{font-size:12px;color:#999}.install-btn{pointer-events:auto;position:absolute;right:14px;background:#fff;border:1px solid #ddd;color:#000;border-radius:100px;padding:6px 12px;font-size:11px;font-weight:400;display:flex;align-items:center;gap:5px;cursor:pointer}.install-btn:active{transform:scale(.96)}.leaflet-top.leaflet-right{top:calc(56px + env(safe-area-inset-top) + 10px);right:14px}.leaflet-control-zoom a{width:40px!important;height:40px!important;line-height:40px!important;font-size:18px!important;background:#fff!important;color:#000!important;border:1px solid #ddd!important;border-radius:4px!important;font-weight:400!important;display:flex!important;align-items:center!important;justify-content:center!important}.leaflet-bar{border:none!important;box-shadow:0 2px 10px rgba(0,0,0,.25)!important}.leaflet-bar a:first-child{border-radius:4px 4px 0 0!important}.leaflet-bar a:last-child{border-radius:0 0 4px 4px!important}.ios-overlay{position:absolute;inset:0;z-index:900;background:rgba(0,0,0,.55);display:flex;align-items:flex-end}.ios-sheet{background:#fff;border-radius:20px 20px 0 0;width:100%;padding:28px 24px max(24px,env(safe-area-inset-bottom));color:#000;animation:sheetUp .22s ease}.ios-sheet h3{margin:0 0 12px;font-size:15px;font-weight:400}.ios-sheet p{margin:0 0 8px;font-size:13px;color:#555;line-height:1.55}.ios-close{margin-top:20px;width:100%;background:#000;color:#fff;border:none;border-radius:100px;padding:14px;font-size:13px;font-weight:400;cursor:pointer}.center-btn{position:absolute;bottom:80px;right:14px;z-index:500;width:44px;height:44px;background:#fff;border:none;border-radius:4px;box-shadow:0 2px 10px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;color:#000}.center-btn:active{transform:scale(.95)}.map-loading{position:absolute;bottom:120px;left:50%;transform:translateX(-50%);z-index:490;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-size:12px;color:var(--ink-muted);white-space:nowrap}.filter-overlay{position:absolute;inset:0;z-index:800;background:rgba(0,0,0,.4);display:flex;align-items:flex-end;animation:fadeIn .18s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.filter-sheet{background:#fff;border-radius:20px 20px 0 0;width:100%;max-height:75vh;display:flex;flex-direction:column;animation:sheetUp .22s ease}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.filter-handle{width:36px;height:4px;background:#ddd;border-radius:2px;margin:12px auto 0}.filter-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #eee}.filter-head h2{margin:0;font-size:15px;font-weight:400;color:#000}.filter-close{width:32px;height:32px;border-radius:50%;background:#f0f0f0;border:none;color:#333;display:flex;align-items:center;justify-content:center;font-size:15px}.filter-list{overflow-y:auto;flex:1 1;padding:4px 0}.filter-item{display:flex;align-items:center;gap:12px;padding:14px 20px;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.05);-webkit-tap-highlight-color:transparent}.filter-item:active{background:#f9f9f9}.filter-check{width:22px;height:22px;border-radius:6px;flex-shrink:0;border:2px solid #ddd;background:transparent;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.filter-check.checked{background:#000;border-color:#000}.filter-check.checked:after{content:"✓";color:#fff;font-size:13px;font-weight:400}.filter-label{flex:1 1;font-size:14px;font-weight:400;color:#000}.filter-count{font-size:12px;color:#999;font-weight:400}.filter-foot{padding:14px 20px max(14px,env(safe-area-inset-bottom));border-top:1px solid #eee;background:#fff;display:flex;gap:10px}.btn-all{flex:0 0 auto;padding:13px 18px}.btn-all,.btn-apply{background:#000;border:none;color:#fff;border-radius:100px;font-size:12px;font-weight:400}.btn-apply{flex:1 1;padding:14px}