:root{--ink:#14110f;--paper:#fbf8f3;--surface:#fff;--muted:#7a746c;--faint:#a39c92;--line:#e8e2d8;--acid:#e8ff3a;--night:#1c1a24;--night-2:#2a2735;--edm:#6b4be8;--edm-bg:#ece7fe;--food:#16876b;--food-bg:#def3ec;--comedy:#c2741a;--comedy-bg:#fbeeda;--music:#c7365e;--music-bg:#fbe7ee;--art:#2a6fb0;--art-bg:#e3effb;--nightlife:#c026a0;--nightlife-bg:#fbe1f4;--sports:#bf5700;--sports-bg:#fbe8d8}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body,html{height:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--night);color:var(--ink);justify-content:center}.frame,body{overflow:hidden;display:flex}.frame{width:100%;max-width:430px;height:100dvh;background:var(--paper);position:relative}.frame,.screen{flex-direction:column}.screen{display:none;flex:1 1;overflow:hidden}.screen.active{display:flex}.topbar{flex-shrink:0;background:var(--night);color:#fff;padding:14px 18px 16px}.topbar-slim{padding-bottom:12px}.brand{display:flex;align-items:center;gap:8px;margin-bottom:12px}.brand .logo{font-weight:800;font-size:19px;letter-spacing:-.02em}.brand .logo b{color:var(--acid)}.brand .loc{margin-left:auto;font-size:12px;color:#bdb8c7;display:flex;align-items:center;gap:4px;background:none;border:none;font-family:inherit;cursor:pointer;padding:4px 0}.brand .loc .loc-edit{font-size:11px;opacity:.7}.brand .loc:active{opacity:.7}.searchwrap{position:relative}.search{width:100%;background:var(--night-2);border:1.5px solid transparent;border-radius:14px;padding:14px 46px 14px 42px;font-size:15px;color:#fff;font-family:inherit;transition:border-color .18s}.search::placeholder{color:#8b8597}.search:focus{outline:none;border-color:var(--acid)}.search-icon{left:14px;color:#8b8597;font-size:16px;pointer-events:none}.search-go,.search-icon{position:absolute;top:50%;transform:translateY(-50%)}.search-go{right:7px;background:var(--acid);color:var(--night);border:none;border-radius:9px;width:34px;height:34px;font-size:18px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center}.search-go:active{transform:translateY(-50%) scale(.92)}.search-clear{position:absolute;right:48px;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.12);color:#cdc8d6;border:none;border-radius:50%;width:22px;height:22px;font-size:13px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}.examples{display:flex;gap:6px;margin-top:11px;overflow-x:auto;scrollbar-width:none}.examples::-webkit-scrollbar{display:none}.ex{flex-shrink:0;font-size:12px;color:#cdc8d6;background:hsla(0,0%,100%,.06);border:1px solid hsla(0,0%,100%,.1);padding:6px 12px;border-radius:20px;cursor:pointer;white-space:nowrap}.ex:active{background:hsla(0,0%,100%,.14)}.map{flex-shrink:0;position:relative;overflow:hidden;background:#ddd6c9;transition:height .28s ease}.map-collapsed{height:190px}.map-expanded{height:56vh}.map .mapboxgl-map,.map .maplibregl-map{width:100%;height:100%}.map-overlay{position:absolute;bottom:32px;left:12px;background:rgba(28,26,36,.86);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:11px;padding:6px 11px;border-radius:8px;font-weight:500;z-index:2;display:flex;align-items:center;gap:6px}.map-overlay b{color:var(--acid)}.map-btn{position:absolute;right:12px;z-index:3;width:40px;height:40px;background:hsla(0,0%,100%,.95);border:1px solid var(--line);border-radius:50%;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.12)}.map-btn:active{transform:scale(.92)}.map-btn.recenter{bottom:32px}.map-handle{position:absolute;bottom:0;left:0;right:0;height:26px;z-index:4;display:flex;align-items:center;justify-content:center;border:none;padding:0;cursor:-webkit-grab;cursor:grab;background:linear-gradient(0deg,rgba(28,26,36,.55),rgba(28,26,36,0));touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.map-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.map-handle .grabber{display:block;width:44px;height:5px;border-radius:3px;background:hsla(0,0%,100%,.75);box-shadow:0 1px 3px rgba(0,0,0,.35);transition:background .15s,width .15s}.map-handle:active .grabber,.map-handle:hover .grabber{background:var(--acid);width:54px}.map-handle:focus-visible .grabber{background:var(--acid);outline:2px solid var(--acid);outline-offset:4px}.cluster-bubble{background:var(--night);color:#fff;border:2px solid var(--acid);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.3)}.map-pin{cursor:pointer;transition:transform .15s;transform-origin:center bottom;display:block}.map-pin:active{transform:scale(1.12)}.map-pin.selected{transform:scale(1.25)}.mapboxgl-popup-content{border-radius:14px!important;padding:0!important;overflow:hidden;box-shadow:0 6px 24px rgba(0,0,0,.22)!important;border:1px solid var(--line)}.mapboxgl-popup-close-button{font-size:18px!important;padding:2px 7px!important;color:var(--muted)}.map-popup{width:210px}.map-popup .pop-emoji{height:56px;display:flex;align-items:center;justify-content:center;font-size:30px}.map-popup .pop-body{padding:9px 12px 11px}.map-popup .pop-title{font-size:13.5px;font-weight:700;color:var(--ink);line-height:1.2}.map-popup .pop-sub{font-size:11.5px;color:var(--muted);margin:3px 0 9px}.map-popup .pop-btn{width:100%;background:var(--ink);color:var(--paper);border:none;border-radius:9px;padding:8px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit}.map-placeholder{height:190px;background:#ddd6c9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:0 24px;text-align:center}.venue-dot{width:9px;height:9px;border-radius:50%;background:var(--muted);opacity:.55;border:1.5px solid var(--paper);cursor:pointer;display:block;transition:opacity .15s,transform .15s}.venue-dot:active,.venue-dot:hover{opacity:.9;transform:scale(1.35)}.venue-marker{z-index:1}.venue-popup{width:190px;padding:10px 12px 11px}.venue-popup .vp-name{font-size:13.5px;font-weight:700;color:var(--ink);line-height:1.2}.venue-popup .vp-open{font-size:11.5px;font-weight:700;color:var(--acid-ink,#5a6b00);margin-top:4px}.venue-popup .vp-sub{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.35}.venue-popup .vp-link{display:inline-block;margin-top:8px;font-size:12px;font-weight:700;color:var(--ink);text-decoration:underline}.venue-popup .vp-attrib{font-size:9.5px;color:var(--muted);opacity:.8;margin-top:8px}.primarybar{flex-shrink:0;display:flex;justify-content:center;padding:12px 14px;background:var(--paper);border-bottom:1px solid var(--line)}.primary-select{position:relative;display:inline-block}.primary-current{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border:1.5px solid var(--ink);border-radius:22px;background:var(--surface);font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;white-space:nowrap}.primary-current .primary-caret{font-size:12px;color:var(--ink)}.primary-native{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:none;background:none;cursor:pointer;font-size:16px;font-family:inherit}.primary-select:focus-within .primary-current{box-shadow:0 0 0 3px rgba(20,17,15,.12)}.filters{flex-shrink:0;display:flex;gap:7px;padding:11px 14px;overflow-x:auto;scrollbar-width:none;background:var(--paper)}.filters::-webkit-scrollbar{display:none}.chip{flex-shrink:0;font-size:12.5px;padding:7px 14px;border-radius:20px;border:1px solid var(--line);color:var(--muted);cursor:pointer;white-space:nowrap;background:var(--surface);font-weight:500}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.pricebar{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:2px 14px 11px;background:var(--paper)}.pricelabel{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}.priceseg{display:inline-flex;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--surface)}.priceseg button{font-family:inherit;font-size:12px;font-weight:600;color:var(--muted);background:transparent;border:none;padding:7px 16px;cursor:pointer}.priceseg button+button{border-left:1px solid var(--line)}.priceseg button.on{background:var(--ink);color:var(--paper)}.feed{flex:1 1;overflow-y:auto;padding:4px 14px 92px;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.feed-status{padding:11px 2px 7px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.feed-more,.feed-status{font-size:12px;color:var(--muted)}.feed-more{text-align:center;padding:18px 0 26px}.feed-status .ai{background:var(--acid);color:var(--night);font-weight:700;font-size:10px;padding:2px 7px;border-radius:6px}.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:13px;margin-bottom:12px;display:flex;gap:13px;cursor:pointer;transition:border-color .15s,transform .1s,box-shadow .15s;position:relative}.card:active{transform:scale(.99)}.card:hover{border-color:#d6cfc2}.card.selected{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink)}.card .thumb{width:66px;height:66px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:28px}.card .body{flex:1 1;min-width:0}.card .title{font-size:14.5px;font-weight:600;color:var(--ink);margin-bottom:3px;line-height:1.25}.card .sub{font-size:12px;color:var(--muted);margin-bottom:8px}.card .foot{gap:8px;flex-wrap:wrap}.card .dist,.card .foot{display:flex;align-items:center}.card .dist{font-size:11.5px;color:var(--faint);gap:3px}.card .src{font-size:10px;color:var(--faint);border:1px solid var(--line);padding:2px 7px;border-radius:6px}.badge{font-size:10px;font-weight:700;padding:3px 8px;border-radius:8px;text-transform:uppercase;letter-spacing:.02em}.badge.edm{background:var(--edm-bg);color:var(--edm)}.badge.food{background:var(--food-bg);color:var(--food)}.badge.comedy{background:var(--comedy-bg);color:var(--comedy)}.badge.music{background:var(--music-bg);color:var(--music)}.badge.art{background:var(--art-bg);color:var(--art)}.badge.nightlife{background:var(--nightlife-bg);color:var(--nightlife)}.badge.sports{background:var(--sports-bg);color:var(--sports)}.price{font-size:11.5px;font-weight:600;color:var(--ink);margin-left:auto}.price.free{color:var(--food)}.savebtn{position:absolute;top:11px;right:11px;font-size:20px;cursor:pointer;color:var(--faint);background:none;border:none;line-height:1;padding:2px}.savebtn.saved{color:var(--music)}.empty{text-align:center;padding:50px 30px;color:var(--muted)}.empty .big{font-size:40px;margin-bottom:10px}.empty .t{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:5px}.empty .s{font-size:13px;line-height:1.5}.empty .reset{margin-top:16px;background:var(--ink);color:var(--paper);border:none;border-radius:12px;padding:11px 20px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.spinner{width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}@keyframes sqpulse{0%,80%,to{opacity:.25;transform:scale(.85)}40%{opacity:1;transform:scale(1)}}.detail-hero{flex-shrink:0;height:200px;display:flex;align-items:center;justify-content:center;font-size:80px;position:relative}.detail-back{left:14px;padding:0 15px 0 11px;border:none;border-radius:19px;font-size:14px;font-weight:600;gap:3px;color:var(--ink)}.detail-back,.detail-save{position:absolute;top:14px;height:38px;background:hsla(0,0%,100%,.92);cursor:pointer;display:flex;align-items:center}.detail-save{right:14px;width:38px;border:none;border-radius:50%;font-size:19px;justify-content:center;color:var(--faint)}.detail-save.saved{color:var(--music)}.detail-body{flex:1 1;overflow-y:auto;padding:18px 20px 110px}.detail-cat{display:inline-block;margin-bottom:10px}.live-pill{display:inline-block;background:var(--acid);color:var(--night);font-size:9.5px;font-weight:800;letter-spacing:.06em;padding:2px 6px;border-radius:5px;margin-right:7px;vertical-align:1px}.thumb{position:relative;overflow:hidden}.thumb-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.detail-hero.has-photo,.thumb.has-photo{background:var(--night-2)}.detail-hero.has-photo{overflow:hidden}.detail-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.detail-hero.has-photo:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.35),transparent 45%)}.detail-hero .detail-back,.detail-hero .detail-save{z-index:2}.hero-credit{left:0;right:0;bottom:0;padding:14px 14px 8px;font-size:10.5px;line-height:1.35;color:hsla(0,0%,100%,.9);background:linear-gradient(0deg,rgba(0,0,0,.72),transparent);text-shadow:0 1px 2px rgba(0,0,0,.5);display:flex;flex-wrap:wrap;gap:0 4px}.hero-credit,.live-dot{position:absolute;z-index:2}.live-dot{top:5px;right:5px;color:var(--acid);font-size:13px;line-height:1;text-shadow:0 0 3px rgba(0,0,0,.35)}.detail-live{display:inline-flex;align-items:center;gap:6px;background:var(--acid);color:var(--night);font-size:12px;font-weight:800;letter-spacing:.02em;padding:5px 11px;border-radius:20px;margin-bottom:14px}.detail-title{font-size:23px;font-weight:800;letter-spacing:-.02em;line-height:1.15;margin-bottom:6px}.detail-venue{font-size:14px;color:var(--muted);margin-bottom:18px}.detail-rows{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px 0;margin-bottom:18px}.detail-row{display:flex;align-items:center;gap:12px;padding:11px 2px;font-size:14px}.detail-row .ico{font-size:17px;width:22px;text-align:center}.detail-row .lab{color:var(--muted)}.detail-row .val{margin-left:auto;font-weight:600;color:var(--ink);text-align:right}.detail-desc{font-size:14.5px;line-height:1.6;color:#3a3530;margin-bottom:20px}.detail-tags{display:flex;flex-wrap:wrap;gap:7px}.detail-tag{font-size:12px;color:var(--muted);border:1px solid var(--line);padding:5px 11px;border-radius:20px}.detail-cta,.detail-tag{background:var(--surface)}.detail-cta{position:absolute;bottom:0;left:0;right:0;padding:14px 20px max(14px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}.detail-btn{width:100%;background:#0b0907;color:#fff;border:none;border-radius:14px;padding:17px;font-size:15.5px;font-weight:700;cursor:pointer;font-family:inherit;box-shadow:0 4px 14px rgba(0,0,0,.22)}.detail-btn:active{transform:scale(.99)}.detail-cta-note{font-size:11px;color:var(--faint);text-align:center;margin-top:9px}.profile-body{flex:1 1;overflow-y:auto;padding:0 0 92px}.profile-top{background:var(--night);color:#fff;padding:28px 20px 24px;gap:15px}.profile-avatar,.profile-top{display:flex;align-items:center}.profile-avatar{width:60px;height:60px;border-radius:50%;background:var(--acid);color:var(--night);justify-content:center;font-size:26px;font-weight:800;flex-shrink:0}.profile-name{font-size:19px;font-weight:700}.profile-sub{font-size:13px;color:#bdb8c7;margin-top:2px}.profile-stats{display:flex;background:var(--surface);border-bottom:1px solid var(--line)}.profile-stat{flex:1 1;text-align:center;padding:16px 0;cursor:pointer}.profile-stat+.profile-stat{border-left:1px solid var(--line)}.profile-stat .num{font-size:22px;font-weight:800;color:var(--ink)}.profile-stat .lab{font-size:11px;color:var(--muted);margin-top:2px}.profile-section-title{font-size:12px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;padding:22px 20px 8px}.profile-row{display:flex;align-items:center;gap:14px;padding:15px 20px;background:var(--surface);border-bottom:1px solid var(--line);cursor:pointer;font-size:14.5px}.profile-row .ico{font-size:18px;width:24px;text-align:center}.profile-row .chev{margin-left:auto;color:var(--faint);font-size:18px}.profile-row .tag-on{margin-left:auto;font-size:12px;color:var(--food);font-weight:600}.profile-pref-wrap{display:flex;flex-wrap:wrap;gap:8px;padding:4px 20px 8px}.profile-pref{font-size:12.5px;padding:8px 14px;border-radius:20px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-weight:500}.profile-pref.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.profile-foot{text-align:center;font-size:11px;color:var(--faint);padding:24px 20px;line-height:1.6}.pref-group-label{font-size:13px;font-weight:700;color:var(--ink);padding:14px 20px 7px}.simple-header{flex-shrink:0;padding:18px 20px 12px;background:var(--paper);border-bottom:1px solid var(--line)}.simple-header h1{font-size:22px;font-weight:800;letter-spacing:-.02em}.simple-header p{font-size:13px;color:var(--muted);margin-top:3px}.nav{position:absolute;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--line);display:flex;padding:9px 0 max(9px,env(safe-area-inset-bottom));z-index:10}.nav-item{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;color:var(--faint);cursor:pointer;font-weight:500;padding:2px 0}.nav-item.on{color:var(--ink)}.nav-item .ic{font-size:20px;line-height:1}.profile-row-edit{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--muted);font-weight:600}.profile-row-edit .chev2{color:var(--faint);font-size:18px}.switch{margin-left:auto;width:46px;height:27px;border-radius:14px;background:var(--line);position:relative;transition:background .18s;flex-shrink:0}.switch.on{background:var(--food)}.switch .knob{position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .18s}.switch.on .knob{left:22px}.alert-panel{background:var(--surface);border-bottom:1px solid var(--line);padding:2px 20px 16px}.alert-panel-label{font-size:12.5px;color:var(--muted);padding:8px 0 10px}.leadseg{display:inline-flex;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--surface)}.leadseg button{font-family:inherit;font-size:12.5px;font-weight:600;color:var(--muted);background:transparent;border:none;padding:8px 16px;cursor:pointer}.leadseg button+button{border-left:1px solid var(--line)}.alert-test,.leadseg button.on{background:var(--ink);color:var(--paper)}.alert-test{display:block;margin-top:14px;border:none;border-radius:12px;padding:12px 18px;font-size:13.5px;font-weight:700;cursor:pointer;font-family:inherit}.alert-test:active{transform:scale(.99)}.alert-note{font-size:11.5px;color:var(--faint);line-height:1.5;margin-top:12px}.modal-backdrop{position:absolute;inset:0;z-index:50;background:rgba(20,17,15,.5);display:flex;align-items:flex-end;justify-content:center}.modal{width:100%;max-width:430px;background:var(--surface);border-radius:20px 20px 0 0;padding:22px 20px max(22px,env(safe-area-inset-bottom));position:relative;animation:sheetUp .22s ease}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-close{position:absolute;top:16px;right:16px;background:none;border:none;font-size:18px;color:var(--faint);cursor:pointer;line-height:1}.modal-title{font-size:18px;font-weight:800;color:var(--ink)}.modal-sub{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5}.modal-inputrow{display:flex;gap:8px;margin-top:16px}.modal-input{flex:1 1;background:var(--paper);border:1.5px solid var(--line);border-radius:12px;padding:13px 14px;font-size:14px;font-family:inherit;color:var(--ink)}.modal-input:focus{outline:none;border-color:var(--ink)}.modal-set{background:var(--ink);color:var(--paper);border:none;border-radius:12px;padding:0 20px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit}.modal-set:disabled{opacity:.5}.modal-error{font-size:12.5px;color:var(--music);margin-top:9px;line-height:1.4}.modal-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);margin-top:18px}.modal-picks{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}.modal-pick{font-size:12.5px;padding:8px 13px;border-radius:20px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-weight:500;font-family:inherit}.modal-gps,.modal-pick:active{background:var(--paper)}.modal-gps{width:100%;margin-top:18px;border:1px solid var(--line);border-radius:12px;padding:13px;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit}.modal-gps:active{background:var(--line)}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}