:root{--brand:#f8d868}.map-shell,.map-shell__canvas{width:100%;position:relative}.map-refetch-banner{top:calc(16px + env(safe-area-inset-top));pointer-events:none;z-index:12;justify-content:center;padding:0 16px;display:flex;position:absolute;left:0;right:0}.map-refetch-button{pointer-events:auto;color:#f9fafb;background:#111827;border:none;border-radius:9999px;padding:10px 18px;font-size:14px;font-weight:700;transition:opacity .2s,transform .2s;box-shadow:0 12px 26px #00000029}.map-refetch-button:hover{opacity:.92}.map-refetch-button:active{transform:translateY(1px)}.map-refetch-button:disabled{opacity:.75;cursor:not-allowed}.map-canvas{touch-action:none;background:#f2f2f2;width:100%;height:63vh;min-height:378px}.map-canvas__viewport{width:100%;height:100%;position:absolute;inset:0}.map-gesture-hint{top:calc(14px + env(safe-area-inset-top));color:#f9fafb;-webkit-backdrop-filter:blur(14px);z-index:7;pointer-events:none;background:#111827d1;border-radius:9999px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:600;line-height:1.2;transition:opacity .35s,transform .35s;display:inline-flex;position:absolute;left:14px;box-shadow:0 10px 24px #0f172a52}.map-gesture-hint__text{letter-spacing:.01em;align-items:center;gap:4px;display:inline-flex}.map-gesture-hint--dismissed{opacity:0;pointer-events:none;transform:translateY(-6px)}.map-controls{left:12px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:30;pointer-events:none;flex-direction:column;gap:12px;width:min(420px,100% - 24px);display:flex;position:absolute}.map-controls>*{pointer-events:auto}.map-controls .map-rank-toggle{align-self:flex-start}.map-filter-chips{scrollbar-width:none;gap:8px;margin-bottom:4px;padding:0 2px;display:flex;overflow-x:auto}.map-filter-chips::-webkit-scrollbar{display:none}.map-filter-chip{--tap-min:32px;min-height:var(--tap-min);height:var(--tap-min);color:#374151;background:#fffffff2;border:1px solid #e5e7eb80;border-radius:9999px;justify-content:center;align-items:center;gap:4px;padding:0 12px;font-size:12px;font-weight:600;line-height:1.2;transition:transform .2s,background-color .2s,border-color .2s,box-shadow .2s;display:inline-flex;box-shadow:0 1px 2px #0000000d}.map-filter-chip[aria-pressed=true]{color:#111827;background:#fff;transform:translateY(-1px);box-shadow:0 4px 6px #0000001a}.map-rank-toggle{background:#ffffffeb;border:1px solid #11182714;border-radius:9999px;align-items:center;gap:4px;width:fit-content;padding:4px;display:inline-flex;box-shadow:0 6px 14px #0000000f,0 1px 2px #00000014}.map-rank-toggle__option{--tap-min:32px;min-width:72px;min-height:var(--tap-min);height:var(--tap-min);color:#4b5563;background:0 0;border:none;border-radius:9999px;justify-content:center;align-items:center;padding:0 12px;font-size:12px;font-weight:600;line-height:1.2;transition:background-color .2s,color .2s,box-shadow .2s,transform .2s;display:inline-flex}.map-rank-toggle__option:hover{color:#111827;background:#f8d8681f}.map-rank-toggle__option:active{transform:translateY(1px)}.map-rank-toggle__option[aria-pressed=true],.map-rank-toggle__option--active{background:var(--brand);color:#111827;box-shadow:0 6px 14px #f8d86873}.fab-stack{right:8px;bottom:calc(96px + env(safe-area-inset-bottom));z-index:10;pointer-events:auto;gap:8px;display:grid;position:absolute}.map-locate-btn{color:#374151;background:#fff;border:1px solid #e5e7ebcc;border-radius:9999px;justify-content:center;align-items:center;width:48px;height:48px;transition:opacity .2s;display:inline-flex;box-shadow:0 6px 14px #00000014,0 1px 3px #0000000a}.map-locate-btn svg{pointer-events:none}.map-locate-btn:active{opacity:.8}.brand-shadow{box-shadow:0 6px 14px #00000014,0 1px 3px #0000000a}.map-rating-marker{color:#111827;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #1118271a;border-radius:9999px;align-items:center;gap:4px;padding:6px 10px;font-size:13px;font-weight:700;transition:transform .2s,box-shadow .2s;display:inline-flex;transform:translate(-50%,-100%);box-shadow:0 8px 18px #11182724}.map-rating-marker:hover{transform:translate(-50%,-100%)translateY(-2px);box-shadow:0 12px 24px #1118272e}.map-rating-marker:active{transform:translate(-50%,-100%)translateY(0)}.map-rating-marker__star{color:#f2b01e;font-size:14px;line-height:1}.map-rating-marker__score{line-height:1}.map-rating-marker__count,.map-rating-marker__no-rating{color:#6b7280;font-size:12px;line-height:1}.map-status-hint{color:#f9fafb;letter-spacing:.01em;background:#0f172ad9;border-radius:9999px;padding:12px 18px;font-size:13px;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 15px 35px #0f172a66}.map-status-hint--error{background:#dc2626eb}.map-geolocation-toast{left:16px;bottom:calc(156px + env(safe-area-inset-bottom));color:#f9fafb;z-index:25;background:#0f172ae0;border-radius:9999px;align-items:center;gap:10px;padding:10px 18px;font-size:13px;font-weight:600;display:inline-flex;position:absolute;box-shadow:0 12px 28px #0f172a59}.map-geolocation-toast--error{background:#dc2626eb}.map-geolocation-toast--success{background:#10b981eb}.map-geolocation-toast__retry{color:inherit;background:#ffffff26;border:none;border-radius:9999px;padding:4px 12px;font-size:12px;font-weight:700}.map-locate-btn__spinner{border:2px solid #0f172a4d;border-top-color:#0f172ad9;border-radius:9999px;width:22px;height:22px;animation:.85s linear infinite spin}.map-locate-btn[data-busy=true]{opacity:.65}.map-results-meta{color:#475569;justify-content:space-between;align-items:center;margin-top:8px;font-size:13px;display:flex}.map-results-meta__count{color:#0f172a;font-weight:600}.map-results-meta__status{color:#94a3b8;align-items:center;gap:6px;font-size:12px;display:inline-flex}.map-results-meta__status-dot{background:#34d399;border-radius:9999px;width:8px;height:8px;animation:2.4s ease-in-out infinite pulse-dot;box-shadow:0 0 #34d39959}.map-results-meta__status.is-loading{color:#f97316}.map-results-meta__status.is-loading .map-results-meta__status-dot{background:#f97316;animation:1.2s ease-in-out infinite pulse-dot;box-shadow:0 0 #f9731673}.map-active-filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.map-active-filters__list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.map-active-filter-chip{color:#0f172a;background:#f8d8682e;border:1px solid #94a3b866;border-radius:9999px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.map-active-filters__clear{color:#64748b;background:0 0;border:none;font-size:12px;font-weight:600;text-decoration:underline}.map-active-filters__empty{color:#94a3b8;font-size:13px}.map-active-filters__clear:hover{color:#0f172a}@keyframes pulse-dot{0%{box-shadow:0 0 #34d39959}70%{box-shadow:0 0 0 10px #34d39900}to{box-shadow:0 0 #34d39900}}@keyframes spin{to{transform:rotate(360deg)}}.map-spot-card{background:#fff;border:1px solid #e2e8f0cc;border-radius:32px;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex;box-shadow:0 18px 38px #0f172a14}.map-spot-card__meta{align-items:flex-start;gap:16px;min-width:0;display:flex}.map-spot-card__index{color:#cbd5f5;font-size:13px;font-weight:700}.map-spot-card__title{color:#111827;font-size:16px;font-weight:700}.map-spot-card__address{color:#6b7280;margin-top:2px;font-size:13px}.map-spot-card__stats{color:#475569;margin-top:4px;font-size:12px;font-weight:600}.map-spot-card__cta{color:#111827;background:var(--brand);border-radius:9999px;flex-shrink:0;padding:10px 18px;font-size:14px;font-weight:700;box-shadow:0 12px 26px #f8d8688c}@media (min-width:640px){.map-canvas{height:65vh}}
