.festival-vendor-map{
  --map-bg-light: #f7f2e6;
  --map-bg-dark: #eee4d3;
  --map-muted: #6f6d68;
  --map-black: #000000;
  --map-paper: #fffaf0;
  --map-white: #ffffff;
  --map-line: #d8cebd;
  --map-focus: #135fa8;
  --map-charcoal: #24211c;
  --festival-yellow: #ffce3a;
  --festival-orange: #d85b1d;
  --result-dim: rgba(5, 5, 4, .32);
  --result-highlight-color: #00e5ff;
  --result-highlight-keyline: #ffffff;
  --result-highlight-fill: rgba(0, 229, 255, .13);
  --result-highlight-glow: rgba(0, 229, 255, .92);
  --map-shadow: 0 14px 38px rgba(36, 33, 28, .14);
  --map-font: "Signika", Arial, Helvetica, sans-serif;
  --applied-category-accent: #6b6b6b;
  --applied-category-contrast: #ffffff;
  color: var(--map-charcoal);
  background: var(--map-bg-light);
  margin: 0;
  min-width: 320px;
  font-family: "Signika", Arial, Helvetica, sans-serif !important;
  font-size: 16px;
  font-weight: 400;
}

.festival-vendor-map, .festival-vendor-map *{ box-sizing: border-box; }
.festival-vendor-map *, .festival-vendor-map button, .festival-vendor-map input, .festival-vendor-map select, .festival-vendor-map textarea{ font-family: inherit !important; }
.festival-vendor-map button, .festival-vendor-map input, .festival-vendor-map select, .festival-vendor-map textarea{ font: inherit; }
.festival-vendor-map button{ color: inherit; }
.festival-vendor-map h1, .festival-vendor-map h2, .festival-vendor-map h3, .festival-vendor-map p{ margin-top: 0; }
.festival-vendor-map .skip-link{ position: fixed; z-index: 100; top: 8px; left: 8px; transform: translateY(-150%); padding: 10px 14px; background: var(--map-white); color: var(--map-black); border-radius: 8px; }
.festival-vendor-map .skip-link:focus{ transform: none; }

.festival-vendor-map .site-header{ position: relative; grid-column: 2; grid-row: 1; min-width: 0; min-height: 124px; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: clamp(16px, 2.4vw, 32px); width: 100%; margin: 0; padding: 13px clamp(18px, 3.6vw, 48px) 15px; overflow: hidden; border-bottom: 1px solid rgba(216, 206, 189, .88); background: linear-gradient(135deg, #fffdf8 0%, #fff8e8 62%, #f7f2e6 100%); }
.festival-vendor-map .site-header::before{ content: ""; position: absolute; inset: 0 auto 0 0; width: clamp(8px, 1.1vw, 14px); background: linear-gradient(180deg, var(--festival-yellow), var(--festival-orange)); }
.festival-vendor-map .site-header::after{ content: ""; position: absolute; right: 0; bottom: 0; width: min(42vw, 620px); height: 7px; border-radius: 999px 999px 0 0; background: linear-gradient(90deg, var(--festival-yellow), var(--festival-orange)); opacity: .82; }
.festival-vendor-map .site-header-copy{ position: relative; z-index: 1; min-width: 0; padding-top: 1px; }
.festival-vendor-map .site-header h1{ max-width: 920px; margin: 0 0 4px; color: var(--map-black); line-height: .98; }
.festival-vendor-map .site-header h1 span{ display: block; }
.festival-vendor-map .site-title-primary{ font-size: clamp(1.18rem, 1.8vw, 1.78rem); font-weight: 600; color: var(--map-charcoal); }
.festival-vendor-map .site-title-map{ margin-top: 2px; font-size: clamp(1.72rem, 3vw, 2.85rem); font-weight: 700; color: var(--festival-orange); }
.festival-vendor-map .eyebrow{ margin-bottom: 3px; text-transform: uppercase; letter-spacing: 0; font-size: .72rem; font-weight: 700; color: #554f3e; }
.festival-vendor-map .prototype-note{ margin: 0; color: var(--map-muted); font-size: .78rem; font-weight: 300; }
.festival-vendor-map .site-logo{ position: relative; z-index: 1; display: block; width: auto; height: clamp(84px, 7vw, 104px); max-width: min(210px, 24vw); object-fit: contain; }
.festival-vendor-map .secondary-button, .festival-vendor-map .subcategory-button{ min-height: 44px; border: 1px solid var(--map-line); border-radius: 999px; background: var(--map-white); color: var(--map-black); padding: 9px 14px; cursor: pointer; font-weight: 600; }
.festival-vendor-map .secondary-button:hover{ border-color: var(--map-black); }
.festival-vendor-map .secondary-button[aria-expanded="true"]{ border-color: var(--festival-orange); background: #fff4d6; box-shadow: inset 0 2px 0 rgba(0, 0, 0, .06); color: var(--map-black); }
.festival-vendor-map .secondary-button:hover, .festival-vendor-map .secondary-button:focus-visible, .festival-vendor-map .secondary-button:active, .festival-vendor-map .subcategory-button:hover, .festival-vendor-map .subcategory-button:focus-visible, .festival-vendor-map .subcategory-button:active, .festival-vendor-map .text-button:hover, .festival-vendor-map .text-button:focus-visible, .festival-vendor-map .text-button:active{ color: var(--map-black) !important; text-decoration: none; }
.festival-vendor-map .secondary-button:hover, .festival-vendor-map .secondary-button:focus-visible, .festival-vendor-map .secondary-button:active, .festival-vendor-map .subcategory-button:hover, .festival-vendor-map .subcategory-button:focus-visible, .festival-vendor-map .subcategory-button:active{ background: var(--map-white) !important; }
.festival-vendor-map .secondary-button.is-active-filter, .festival-vendor-map .secondary-button.is-active-filter:hover, .festival-vendor-map .secondary-button.is-active-filter:focus-visible, .festival-vendor-map .secondary-button.is-active-filter:active, .festival-vendor-map .secondary-button.is-active-filter[aria-expanded="true"]{ border-color: var(--filter-button-bg) !important; background: var(--filter-button-bg) !important; color: #ffffff !important; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .16); }
.festival-vendor-map .directory-footer #mobile-filter-button:not(.is-active-filter), .festival-vendor-map .directory-footer #mobile-filter-button:not(.is-active-filter):hover, .festival-vendor-map .directory-footer #mobile-filter-button:not(.is-active-filter):focus-visible, .festival-vendor-map .directory-footer #mobile-filter-button:not(.is-active-filter):active{ border-color: var(--festival-orange) !important; background: linear-gradient(90deg, var(--festival-yellow), var(--festival-orange)) !important; color: #ffffff !important; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .12); }
.festival-vendor-map .filter-button-label{ color: inherit; text-transform: uppercase; }
.festival-vendor-map .filter-button-count{ display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 30px; border-radius: 999px; padding: 0 8px; background: var(--filter-count-bg, #2f2f2f) !important; color: #ffffff !important; font-size: .72rem; font-weight: 700; line-height: 1; }

.festival-vendor-map .app-shell{ height: 100vh; min-height: 640px; display: grid; grid-template-columns: clamp(370px, 28vw, 420px) minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); max-width: none; margin: 0; overflow: hidden; }
.festival-vendor-map .directory-panel{ position: relative; grid-column: 1; grid-row: 1 / span 2; min-width: 0; min-height: 0; height: 100%; display: flex; flex-direction: column; overflow: hidden; background: rgba(255, 255, 255, .92); border-right: 1px solid var(--map-line); padding: 0 14px; }
.festival-vendor-map .sticky-search{ position: sticky; z-index: 30; top: 0; margin: 0 -14px; padding: 10px 14px 9px; background: rgba(255, 254, 248, .97); border-bottom: 1px solid var(--map-line); box-shadow: none; }
.festival-vendor-map .sticky-search > label{ display: block; font-size: .82rem; font-weight: 600; margin-bottom: 9px; }
.festival-vendor-map .search-row, .festival-vendor-map .search-wrap{ display: flex; gap: 9px; }
.festival-vendor-map .search-wrap{ position: relative; flex: 1; }
.festival-vendor-map .search-wrap svg{ position: absolute; left: 15px; top: 14px; width: 20px; fill: none; stroke: var(--map-muted); stroke-width: 2; }
.festival-vendor-map .search-wrap input{ width: 100%; min-height: 50px; padding: 10px 48px 10px 44px; border: 2px solid #b9ad9a; border-radius: 13px; background: var(--map-white); color: var(--map-charcoal); font-weight: 400; }
.festival-vendor-map .search-wrap input[type="search"]::-webkit-search-cancel-button{ -webkit-appearance: none; appearance: none; }
.festival-vendor-map .search-wrap input[type="search"]::-ms-clear, .festival-vendor-map .search-wrap input[type="search"]::-ms-reveal{ display: none; width: 0; height: 0; }
.festival-vendor-map .search-wrap input:focus{ border-color: var(--map-focus); outline: 3px solid rgba(19, 95, 168, .2); }
.festival-vendor-map .icon-button{ display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0; border: 1px solid var(--map-line); border-radius: 50%; background: var(--map-white); color: var(--map-black); cursor: pointer; font-size: 1.45rem; line-height: 1; }
.festival-vendor-map .clear-search::before, .festival-vendor-map .clear-search::after{ content: ""; position: absolute; left: 50%; top: 50%; width: 17px; height: 2px; border-radius: 999px; background: currentColor; transform-origin: center; }
.festival-vendor-map .clear-search::before{ transform: translate(-50%, -50%) rotate(45deg); }
.festival-vendor-map .clear-search::after{ transform: translate(-50%, -50%) rotate(-45deg); }
.festival-vendor-map .filter-sheet-close, .festival-vendor-map #close-map, .festival-vendor-map .sheet-close, .festival-vendor-map .stall-label-close{ color: var(--map-black); font-size: 0; line-height: 1; text-indent: 0; text-transform: none; opacity: 1; letter-spacing: 0; }
.festival-vendor-map .filter-sheet-close::before, .festival-vendor-map .filter-sheet-close::after, .festival-vendor-map #close-map::before, .festival-vendor-map #close-map::after, .festival-vendor-map .sheet-close::before, .festival-vendor-map .sheet-close::after, .festival-vendor-map .stall-label-close::before, .festival-vendor-map .stall-label-close::after{ content: none; display: none; }
.festival-vendor-map .filter-sheet-close svg, .festival-vendor-map #close-map svg, .festival-vendor-map .sheet-close svg, .festival-vendor-map .stall-label-close svg{ display: block; width: 21px; height: 21px; fill: none !important; stroke: currentColor !important; stroke-width: 2.6px; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
.festival-vendor-map .stall-label-close svg{ width: 14px; height: 14px; stroke-width: 2px; }
.festival-vendor-map .clear-search{ position: absolute; right: 3px; top: 50%; transform: translateY(-50%); border: 0; background: transparent; color: var(--map-black); font-size: 0; }
.festival-vendor-map .clear-search:hover, .festival-vendor-map .clear-search:focus-visible, .festival-vendor-map .clear-search:active{ background: transparent !important; color: var(--map-black) !important; }
.festival-vendor-map .section-heading, .festival-vendor-map .map-header{ display: flex; align-items: center; justify-content: space-between; }
.festival-vendor-map .section-heading{ margin-top: 23px; }
.festival-vendor-map .section-heading h2{ font-size: 1rem; margin: 0; font-weight: 700; }
.festival-vendor-map .filter-sheet-actions{ display: flex; align-items: center; gap: 8px; }
.festival-vendor-map .filter-sheet-close, .festival-vendor-map .filter-show-results{ display: none; }
.festival-vendor-map .text-button{ border: 0; background: none; color: #3e3a2d; text-decoration: underline; cursor: pointer; font-weight: 600; }
.festival-vendor-map .filter-panel{ position: absolute; z-index: 46; left: 0; right: 0; top: auto; bottom: 0; max-height: min(82dvh, calc(100% - var(--sticky-search-height, 80px) - 12px)); overflow-y: auto; overscroll-behavior: contain; margin: 0; padding: 16px 14px 18px; border: 1px solid var(--map-line); border-bottom: 0; border-left: 0; border-radius: 22px 22px 0 0; background: rgba(255, 254, 248, .99); box-shadow: 0 -18px 42px rgba(34, 30, 20, .24); transform: translateY(0); transition: transform .18s ease, visibility .18s ease; }
.festival-vendor-map .filter-panel.mobile-collapsed{ visibility: hidden; pointer-events: none; transform: translateY(105%); }
.festival-vendor-map .filter-panel.is-open{ visibility: visible; pointer-events: auto; transform: translateY(0); }
.festival-vendor-map .filter-sheet-heading{ position: sticky; z-index: 2; top: -16px; margin: -16px -14px 4px; padding: 15px 14px 10px; background: rgba(255, 254, 248, .99); border-bottom: 1px solid rgba(201, 194, 170, .7); }
.festival-vendor-map .filter-sheet-close{ display: grid; width: 40px; height: 40px; min-width: 40px; min-height: 40px; font-size: 0; }
.festival-vendor-map .filter-panel .filter-chips{ display: none; }
.festival-vendor-map .filter-show-results{ position: sticky; bottom: calc(-1 * max(18px, env(safe-area-inset-bottom))); display: flex; width: 100%; margin-top: 16px; justify-content: center; background: var(--festival-orange); }
.festival-vendor-map .results-scroll{ flex: 1 1 auto; min-height: 0; overflow: hidden; padding-bottom: 0; display: flex; flex-direction: column; }
.festival-vendor-map .stall-results-area{ flex: 1 1 auto; min-height: 0; overflow: auto; padding-bottom: 18px; scrollbar-gutter: stable; }
.festival-vendor-map .stall-results-area::-webkit-scrollbar{ width: 14px; }
.festival-vendor-map .stall-results-area::-webkit-scrollbar-track{ background: transparent; }
.festival-vendor-map .stall-results-area::-webkit-scrollbar-thumb{ min-height: 36px; border: 4px solid transparent; border-radius: 999px; background: #aaa38c; background-clip: padding-box; }
.festival-vendor-map .stall-results-area::-webkit-scrollbar-thumb:hover{ background-color: #817a68; }
.festival-vendor-map .directory-footer{ flex: 0 0 auto; position: relative; z-index: 44; margin: 0 -14px; padding: 16px 14px; border-top: 1px solid var(--map-line); background: rgba(255, 254, 248, .98); }
.festival-vendor-map .mobile-filter-actions{ width: 100%; }
.festival-vendor-map .mobile-clear-filters{ display: none; }
.festival-vendor-map .directory-footer #mobile-filter-button{ display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 100%; }

.festival-vendor-map .category-navigation{ --sheet-category-size: clamp(44px, 6vw, 54px); display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); align-items: center; gap: clamp(3px, 1vw, 10px); margin: 7px -4px -1px; overflow: visible; padding: 13px 4px 16px; }
.festival-vendor-map .category-buttons{ display: contents; }
.festival-vendor-map .category-icon-button{ justify-self: center; flex: 0 0 auto; width: var(--sheet-category-size); height: var(--sheet-category-size); min-width: 44px; min-height: 44px; aspect-ratio: 1; display: grid; place-items: center; padding: 0; border: 2px solid var(--map-charcoal); border-radius: 50%; background: var(--map-white); color: var(--category); cursor: pointer; box-shadow: 0 2px 0 rgba(0, 0, 0, .06); position: relative; }
.festival-vendor-map .category-icon-button svg{ width: clamp(22px, calc(var(--sheet-category-size) * .52), 30px); height: clamp(22px, calc(var(--sheet-category-size) * .52), 30px); fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.festival-vendor-map .category-icon-button:hover, .festival-vendor-map .category-icon-button:focus-visible{ transform: translateY(-1px); background: var(--map-white) !important; color: var(--category) !important; box-shadow: 0 4px 10px rgba(0, 0, 0, .12); }
.festival-vendor-map .category-icon-button[aria-pressed="true"], .festival-vendor-map .category-icon-button[aria-pressed="true"]:hover, .festival-vendor-map .category-icon-button[aria-pressed="true"]:focus-visible, .festival-vendor-map .category-icon-button[aria-pressed="true"]:active{ background: var(--category) !important; color: var(--icon-contrast, var(--map-white)) !important; border-color: var(--map-black); box-shadow: 0 0 0 3px #fff7e6, 0 0 0 5px var(--map-black); }
.festival-vendor-map .category-icon-button[aria-pressed="true"] .force-white-icon{ color: var(--map-white); stroke: var(--map-white); }
.festival-vendor-map .kid-category-button{ --category: #a02eff; }

.festival-vendor-map .selected-category{ margin-top: 8px; }
.festival-vendor-map .selected-category-pill{ width: 100%; min-height: 46px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 999px; background: var(--category-presentation, var(--category)); color: var(--map-white); padding: 9px 14px; text-align: left; cursor: pointer; font-weight: 700; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .18), 0 4px 12px rgba(36, 33, 28, .12); }
.festival-vendor-map .selected-category-marker{ display: none; }
.festival-vendor-map .selected-category-name{ flex: 1; }
.festival-vendor-map .selected-category-count{ color: rgba(255, 255, 255, .88); font-size: .82rem; font-weight: 400; }
.festival-vendor-map .selected-category-check{ display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: rgba(0, 0, 0, .24); color: var(--map-white); font-weight: 700; }
.festival-vendor-map .selected-category-pill:hover, .festival-vendor-map .selected-category-pill:focus-visible, .festival-vendor-map .selected-category-pill:active{ color: var(--map-white) !important; filter: brightness(.95); }

.festival-vendor-map .subcategory-area{ margin: 9px 0 2px; padding: 12px; border: 1px solid var(--map-line); background: #fffdf8; border-radius: 13px; box-shadow: 0 3px 12px rgba(36, 33, 28, .05); }
.festival-vendor-map .subcategory-area p{ margin: 0 0 9px; font-size: .78rem; color: var(--map-muted); font-weight: 600; }
.festival-vendor-map .subcategory-buttons, .festival-vendor-map .filter-chips{ display: flex; flex-wrap: wrap; gap: 8px; }
.festival-vendor-map .subcategory-button{ min-height: 38px; padding: 7px 11px; font-size: .82rem; }
.festival-vendor-map .subcategory-button[aria-pressed="true"], .festival-vendor-map .subcategory-button[aria-pressed="true"]:hover, .festival-vendor-map .subcategory-button[aria-pressed="true"]:focus-visible, .festival-vendor-map .subcategory-button[aria-pressed="true"]:active{ border: 2px solid var(--map-black); background: #fff2cc !important; color: var(--map-black) !important; font-weight: 700; box-shadow: inset 0 0 0 2px var(--map-white); }
.festival-vendor-map .subcategory-button[aria-pressed="true"]::before{ content: "✓"; margin-right: 6px; font-weight: 700; }
.festival-vendor-map .filter-chips{ margin-top: 11px; }
.festival-vendor-map .filter-chip{ display: inline-flex; align-items: center; gap: 7px; min-height: 34px; border: 1px solid #b8ad9b; border-radius: 999px; background: color-mix(in srgb, var(--chip-color, var(--map-bg-light)) 10%, var(--map-white)); padding: 6px 10px 6px 11px; cursor: pointer; font-size: .82rem; font-weight: 600; line-height: normal; }
.festival-vendor-map .filter-chip-remove{ display: inline-grid; place-items: center; width: 17px; height: 17px; border-radius: 50%; background: rgba(0, 0, 0, .14); color: var(--map-black); font-size: .7rem; font-weight: 700; line-height: 1; }
.festival-vendor-map .kid-filter-chip{ border: 2px solid #6d208f; background: color-mix(in srgb, #a02eff 14%, var(--map-bg-light)); padding: 5px 9px 5px 10px; box-shadow: none; }
.festival-vendor-map .applied-clear-all{ display: inline-flex !important; align-items: center; justify-content: center; gap: 0 !important; flex: 0 0 auto; box-sizing: border-box !important; width: 34px !important; min-width: 34px !important; max-width: 34px !important; height: 34px !important; min-height: 34px !important; max-height: 34px !important; padding: 0 !important; border: 1px solid #b8ad9b; border-radius: 999px; background: var(--map-white) !important; color: var(--map-black) !important; cursor: pointer; font-size: 0 !important; line-height: 0 !important; white-space: nowrap; }
.festival-vendor-map .applied-clear-all svg{ display: block; box-sizing: border-box; width: 18px; height: 18px; padding: 4px; flex: 0 0 auto; border-radius: 50%; background: var(--map-black); fill: none; stroke: var(--map-white); stroke-width: 2.4px; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
.festival-vendor-map .filter-chip:hover, .festival-vendor-map .filter-chip:focus-visible, .festival-vendor-map .filter-chip:active{ color: var(--map-black) !important; background: color-mix(in srgb, var(--chip-color, var(--map-bg-light)) 16%, var(--map-white)) !important; }
.festival-vendor-map .applied-clear-all:hover, .festival-vendor-map .applied-clear-all:focus-visible, .festival-vendor-map .applied-clear-all:active{ gap: 0 !important; width: 34px !important; min-width: 34px !important; max-width: 34px !important; height: 34px !important; min-height: 34px !important; max-height: 34px !important; padding: 0 !important; border-width: 1px !important; border-color: var(--map-black) !important; border-radius: 999px !important; background: #fffdf8 !important; color: var(--map-black) !important; font-size: 0 !important; line-height: 0 !important; }

.festival-vendor-map .tabs{ flex: 0 0 auto; z-index: 11; display: flex; border-bottom: 1px solid var(--map-line); margin-top: 0; background: rgba(255, 255, 255, .98); }
.festival-vendor-map .tabs button{ position: relative; flex: 1; min-height: 48px; border: 0; background: transparent; color: var(--map-black); cursor: pointer; font-weight: 600; }
.festival-vendor-map .tabs button:hover, .festival-vendor-map .tabs button:focus-visible, .festival-vendor-map .tabs button:active{ background: rgba(255, 250, 240, .82) !important; color: var(--map-black) !important; }
.festival-vendor-map .tabs button > span:first-child{ position: relative; display: inline-block; }
.festival-vendor-map .tabs button[aria-selected="true"] > span:first-child::after{ content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 3px; border-radius: 999px; background: var(--applied-category-accent); }
.festival-vendor-map .tabs button[aria-selected="true"], .festival-vendor-map .tabs button[aria-selected="true"]:hover, .festival-vendor-map .tabs button[aria-selected="true"]:focus-visible, .festival-vendor-map .tabs button[aria-selected="true"]:active{ color: var(--map-black) !important; font-weight: 700; }
.festival-vendor-map #result-count, .festival-vendor-map #favourite-count{ display: inline-grid; place-items: center; min-width: 23px; height: 23px; border-radius: 50%; font-size: .75rem; }
.festival-vendor-map #result-count{ background: var(--applied-category-accent); color: var(--applied-category-contrast); }
.festival-vendor-map #favourite-count{ background: var(--map-bg-dark); color: var(--map-black); }
.festival-vendor-map #favourites-tab[aria-selected="true"] #favourite-count{ background: var(--applied-category-accent); color: var(--applied-category-contrast); }
.festival-vendor-map .results-list{ list-style: none; margin: 0; padding: 10px 0 0; display: grid; gap: 9px; }
.festival-vendor-map .result-card{ --card-surface: var(--map-white); position: relative; display: grid; grid-template-columns: 6px minmax(0, 1fr) 52px; overflow: visible; border: 1px solid var(--map-line); border-radius: 14px; background: var(--map-white); box-shadow: 0 3px 10px rgba(36, 33, 28, .07); }
.festival-vendor-map .category-strip{ border-radius: 13px 0 0 13px; background: var(--category); }
.festival-vendor-map .result-main{ min-width: 0; padding: 13px 12px; border: 0; background: transparent; text-align: left; cursor: pointer; }
.festival-vendor-map .result-name{ display: block; margin-bottom: 5px; color: var(--map-black); font-weight: 700; line-height: 1.18; }
.festival-vendor-map .result-award-icon{ display: inline-block; width: 16px; height: 16px; margin-left: 6px; opacity: .58; vertical-align: -3px; }
.festival-vendor-map .result-meta{ display: flex; flex-wrap: wrap; gap: 5px; align-items: center; color: var(--map-muted); font-size: .78rem; font-weight: 300; }
.festival-vendor-map .result-separator{ color: #aaa38c; }
.festival-vendor-map .result-category-pill{ display: inline-block; border-radius: 999px; padding: 2px 7px; background: var(--category-presentation, var(--category)); color: var(--map-white); font-size: .72rem; font-weight: 600; line-height: 1.25; }
.festival-vendor-map .result-subcategories{ color: #6b6b6b; font-weight: 300; line-height: 1.35; }
.festival-vendor-map .badge{ display: inline-block; border: 1px solid #aaa38c; border-radius: 999px; padding: 2px 7px; background: var(--map-bg-light); color: #49463b; font-size: .69rem; font-weight: 600; text-transform: capitalize; }
.festival-vendor-map .result-type-badge{ opacity: .85; }
.festival-vendor-map .favourite-button{ display: inline-grid; place-items: center; width: 34px; height: 34px; min-width: 34px; min-height: 34px; margin: -4px 0 -7px 6px; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; color: #625f55; vertical-align: baseline; }
.festival-vendor-map .favourite-button svg{ width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.festival-vendor-map .favourite-button svg path:not([stroke="none"]){ fill: none; }
.festival-vendor-map .favourite-button[aria-pressed="false"]{ color: #625f55; }
.festival-vendor-map .favourite-button[aria-pressed="true"]{ background: transparent; color: #000000; }
.festival-vendor-map .favourite-button[aria-pressed="true"] svg{ stroke: #000000; filter: none; }
.festival-vendor-map .favourite-button[aria-pressed="true"] svg path:not([stroke="none"]){ fill: var(--category); }
.festival-vendor-map .favourite-button:focus-visible{ outline: 3px solid rgba(19, 95, 168, .46); outline-offset: 2px; }
.festival-vendor-map .result-favourite-button{ align-self: start; justify-self: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; margin: 5px 4px 0 0; }
.festival-vendor-map .result-favourite-button svg{ width: 23px; height: 23px; }
.festival-vendor-map .result-card:focus-within{ outline: 3px solid rgba(19, 95, 168, .3); outline-offset: 1px; }
.festival-vendor-map .empty-state{ text-align: center; padding: 42px 14px; }
.festival-vendor-map .primary-button{ min-height: 48px; padding: 11px 18px; border: 0; border-radius: 11px; background: var(--festival-orange); color: var(--map-white); font-weight: 600; cursor: pointer; }
.festival-vendor-map .primary-button:hover, .festival-vendor-map .primary-button:focus-visible, .festival-vendor-map .primary-button:active{ color: var(--map-white) !important; filter: brightness(.88); }
.festival-vendor-map #empty-clear, .festival-vendor-map #empty-clear:hover, .festival-vendor-map #empty-clear:focus-visible, .festival-vendor-map #empty-clear:active{ background: #6b6b6b !important; color: var(--map-white) !important; text-transform: uppercase; filter: none; }
.festival-vendor-map .error-banner{ padding: 12px; margin: 12px 0; border: 2px solid #a93434; border-radius: 10px; background: #fff2f2; color: #731f1f; }

.festival-vendor-map .map-section{ position: relative; grid-column: 2; grid-row: 2; min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: hidden; padding: 22px 22px 22px; background: #f1e8d8; }
.festival-vendor-map .map-header{ min-height: 60px; align-items: flex-start; padding-bottom: 10px; }
.festival-vendor-map .map-header > div{ display: flex; align-items: center; min-width: 0; }
.festival-vendor-map .map-header h2{ margin: 0; font-size: clamp(1.72rem, 2.6vw, 2.3rem); line-height: 1; font-weight: 700; color: var(--map-black); }
.festival-vendor-map .map-stage{ position: relative; flex: 1 1 auto; height: auto; min-height: 420px; overflow: hidden; border: 1px solid #b9ad9a; border-radius: 18px; background: #fffaf0; box-shadow: var(--map-shadow); touch-action: none; user-select: none; -webkit-user-select: none; }
.festival-vendor-map .svg-host{ position: relative; z-index: 1; width: 100%; height: 100%; cursor: grab; user-select: none; -webkit-user-select: none; }
.festival-vendor-map .svg-host.dragging{ cursor: grabbing; }
.festival-vendor-map .svg-host svg{ width: 100%; height: 100%; display: block; user-select: none; -webkit-user-select: none; }
.festival-vendor-map .svg-host [data-map-location], .festival-vendor-map .svg-host [data-map-location] *{ cursor: pointer; pointer-events: auto; }
.festival-vendor-map .result-backdrop{ position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; background: var(--result-dim); pointer-events: none !important; }
.festival-vendor-map .result-backdrop[hidden]{ display: none; }
.festival-vendor-map .result-host{ position: absolute; z-index: 3; inset: 0; width: 100%; height: 100%; pointer-events: none !important; overflow: hidden; }
.festival-vendor-map .result-host:empty{ display: none; }
.festival-vendor-map .result-host .result-highlight-overlay{ pointer-events: none !important; }
.festival-vendor-map .result-host .result-highlight-cluster{ vector-effect: non-scaling-stroke; fill: var(--result-highlight-fill); stroke-linejoin: round; pointer-events: none !important; }
.festival-vendor-map .result-host .result-highlight-cluster-outer{ stroke: var(--result-highlight-glow); stroke-width: 16px; opacity: .42; }
.festival-vendor-map .result-host .result-highlight-cluster-main{ fill: transparent; stroke: var(--result-highlight-color); stroke-width: 7px; opacity: .98; }
.festival-vendor-map .result-host .result-highlight-cluster-keyline{ fill: transparent; stroke: var(--result-highlight-keyline); stroke-width: 2.5px; }
.festival-vendor-map .result-backdrop.is-complete-result-set{ background: rgba(5, 5, 4, .2); }
.festival-vendor-map .selection-host{ position: absolute; z-index: 6; inset: 0; width: 100%; height: 100%; pointer-events: none !important; overflow: hidden; }
.festival-vendor-map .selection-host:empty{ display: none; }
.festival-vendor-map .selection-host .selection-mirror{ pointer-events: none !important; }
.festival-vendor-map .selection-host .selection-mirror [data-map-location]{ cursor: default; }
.festival-vendor-map .selection-host .selection-halo{ vector-effect: non-scaling-stroke; fill: none; stroke: var(--selection-halo, var(--selection-outline, #ffce3a)); stroke-linejoin: round; pointer-events: none !important; }
.festival-vendor-map .selection-host .selection-halo-wide{ stroke-width: 26px; opacity: .38; filter: drop-shadow(0 0 18px var(--selection-halo, #ffce3a)); }
.festival-vendor-map .selection-host .selection-halo-medium{ stroke-width: 15px; opacity: .68; filter: drop-shadow(0 0 9px var(--selection-halo, #ffce3a)); }
.festival-vendor-map .selection-host .selection-halo-tight{ stroke-width: 8px; opacity: .95; filter: drop-shadow(0 0 2px rgba(255, 255, 255, .72)) drop-shadow(0 0 5px var(--selection-halo, #ffce3a)); }
.festival-vendor-map .selection-host .selection-shape, .festival-vendor-map .selection-host .selection-cluster{ vector-effect: non-scaling-stroke; fill: var(--selection-fill, rgba(255, 206, 58, .12)) !important; stroke: #ffffff !important; stroke-width: 3px !important; stroke-linejoin: round; filter: drop-shadow(0 0 1px rgba(0, 0, 0, .62)) drop-shadow(0 0 5px var(--selection-glow, #ffce3a)); }
.festival-vendor-map .selection-host .selection-fill-only{ vector-effect: non-scaling-stroke; fill: var(--selection-fill, rgba(255, 206, 58, .12)) !important; stroke: none !important; filter: none; }
.festival-vendor-map .map-controls{ position: absolute; z-index: 4; top: 14px; right: 14px; display: grid; grid-template-columns: repeat(2, 46px); gap: 7px; width: max-content; justify-items: stretch; user-select: none; -webkit-user-select: none; }
.festival-vendor-map .map-controls button{ width: 46px; min-width: 46px; min-height: 46px; padding: 0; border: 1px solid #807966; background: var(--map-white) !important; color: var(--map-black) !important; border-radius: 9px; box-shadow: 0 2px 7px rgba(0, 0, 0, .12); cursor: pointer; font-weight: 600; font-family: var(--map-font); }
.festival-vendor-map .map-controls button:hover, .festival-vendor-map .map-controls button:focus-visible{ background: var(--map-white) !important; color: var(--map-black) !important; border-color: var(--map-black); }
.festival-vendor-map .map-controls button:active{ background: var(--map-white) !important; color: var(--map-black) !important; transform: translateY(1px); box-shadow: inset 0 2px 0 rgba(0, 0, 0, .1); }
.festival-vendor-map .map-controls button:disabled{ opacity: .52; cursor: default; box-shadow: none; }
.festival-vendor-map .map-controls button:last-child{ grid-column: 1 / -1; display: flex; align-items: center; justify-content: center; width: 100%; min-width: 0; padding: 6px 8px; font-size: .75rem; line-height: 1.12; text-align: center; text-transform: uppercase; white-space: normal; }

.festival-vendor-map .stall-backdrop{ position: absolute; inset: 0; z-index: 5; width: 100%; height: 100%; background: rgba(5, 5, 4, .48); cursor: pointer; }
.festival-vendor-map .stall-backdrop[hidden]{ display: none; }
.festival-vendor-map .stall-label{ --card-surface: var(--map-paper); position: absolute; z-index: 7; left: 50%; top: 50%; transform: translate(-50%, 0); width: min(370px, calc(100% - 28px)); padding: 18px 16px 15px; border: 1px solid rgba(0, 0, 0, .12); border-radius: 18px; background: var(--map-paper); box-shadow: 0 12px 34px rgba(34, 30, 20, .22); user-select: none; -webkit-user-select: none; }
.festival-vendor-map .stall-label-close{ position: absolute; top: 7px; right: 7px; z-index: 2; display: grid; place-items: center; width: 40px; height: 40px; min-width: 40px; min-height: 40px; margin: 0; padding: 0; border: 1px solid var(--map-line); border-radius: 50%; background: var(--map-paper); color: var(--map-black); cursor: pointer; line-height: 1; box-shadow: 0 2px 7px rgba(0, 0, 0, .08); }
.festival-vendor-map .stall-label-close:hover, .festival-vendor-map .stall-label-close:focus-visible, .festival-vendor-map .stall-label-close:active, .festival-vendor-map .filter-sheet-close:hover, .festival-vendor-map .filter-sheet-close:focus-visible, .festival-vendor-map .filter-sheet-close:active, .festival-vendor-map #close-map:hover, .festival-vendor-map #close-map:focus-visible, .festival-vendor-map #close-map:active, .festival-vendor-map .sheet-close:hover, .festival-vendor-map .sheet-close:focus-visible, .festival-vendor-map .sheet-close:active{ border-color: var(--map-black); background: var(--map-white) !important; color: var(--map-black) !important; }
.festival-vendor-map .stall-label-content{ display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 14px; align-items: center; padding: 2px 34px 0 1px; }
.festival-vendor-map .stall-category-icon{ display: grid; place-items: center; width: 52px; height: 52px; border: 2px solid #292823; border-radius: 50%; background: var(--category); background-clip: padding-box; color: var(--icon-contrast, var(--map-white)); box-shadow: none; outline: 0; }
.festival-vendor-map .stall-category-icon svg{ width: 27px; height: 27px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.festival-vendor-map .stall-category-icon .force-white-icon{ color: var(--map-white); stroke: var(--map-white); }
.festival-vendor-map .stall-label-copy{ min-width: 0; }
.festival-vendor-map .stall-label-title-row{ display: block; min-width: 0; }
.festival-vendor-map .stall-label h3{ margin: 0 0 4px; color: var(--map-black); font-size: 1.05rem; font-weight: 700; line-height: 1.08; }
.festival-vendor-map .stall-label-title-row h3{ margin-bottom: 0; }
.festival-vendor-map .stall-favourite-button{ width: 32px; height: 32px; min-width: 32px; min-height: 32px; margin: -2px 0 -8px 3px; transform: translateY(5px); }
.festival-vendor-map .stall-favourite-button svg{ width: 21px; height: 21px; }
.festival-vendor-map .stall-label p{ margin: 0; color: var(--map-muted); font-size: .78rem; font-weight: 300; line-height: 1.3; }
.festival-vendor-map .stall-label-meta{ display: flex; flex-wrap: wrap; align-items: center; gap: 5px 6px; }
.festival-vendor-map .stall-meta-separator{ color: #8b8371; font-weight: 600; }
.festival-vendor-map .stall-meta-category{ color: var(--map-muted); }
.festival-vendor-map .stall-label .view-details-button{ width: 100%; margin-top: 12px; }

.festival-vendor-map .sheet-backdrop{ position: fixed; inset: 0; z-index: 50; background: rgba(5, 5, 4, .48); }
.festival-vendor-map .filter-backdrop{ position: absolute; inset: 0; z-index: 45; background: rgba(5, 5, 4, .42); }
.festival-vendor-map .filter-backdrop[hidden]{ display: none; }
.festival-vendor-map .detail-sheet{ --card-surface: var(--map-paper); position: fixed; z-index: 60; left: 50%; top: 50%; bottom: auto; transform: translate(-50%, -50%); width: min(740px, calc(100% - 40px)); max-height: min(820px, 84vh); overflow: auto; padding: 34px 32px 30px; border-radius: 22px; background: var(--map-paper); box-shadow: 0 18px 60px rgba(0, 0, 0, .24); }
.festival-vendor-map .sheet-handle{ display: none; width: 48px; height: 5px; margin: -14px auto 18px; border-radius: 5px; background: var(--map-bg-dark); pointer-events: none; }
.festival-vendor-map .sheet-close{ position: absolute; z-index: 4; right: 16px; top: 16px; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; line-height: 1; pointer-events: auto; }
.festival-vendor-map .detail-title-row{ display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 14px; align-items: center; padding-right: 56px; margin-bottom: 16px; }
.festival-vendor-map .detail-title-wrap{ display: block; min-width: 0; }
.festival-vendor-map .detail-sheet h2{ margin: 0; font-size: 1.8rem; line-height: 1.08; font-weight: 700; }
.festival-vendor-map .detail-category-icon{ display: grid; place-items: center; width: 58px; height: 58px; border: 2px solid #292823; border-radius: 50%; background: var(--category); background-clip: padding-box; color: var(--icon-contrast, var(--map-white)); box-shadow: none; outline: 0; }
.festival-vendor-map .detail-category-icon svg{ width: 30px; height: 30px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.festival-vendor-map .detail-category-icon .force-white-icon{ color: var(--map-white); stroke: var(--map-white); }
.festival-vendor-map .detail-favourite-button{ width: 36px; height: 36px; min-width: 36px; min-height: 36px; margin: -2px 0 -9px 4px; transform: translateY(1px); vertical-align: top; }
.festival-vendor-map .detail-category{ font-weight: 600; }
.festival-vendor-map #detail-content{ position: relative; }
.festival-vendor-map .detail-summary, .festival-vendor-map .detail-facts{ display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.festival-vendor-map .detail-summary{ margin-bottom: 13px; }
.festival-vendor-map .detail-facts{ margin: 0 0 10px; align-items: center; row-gap: 7px; }
.festival-vendor-map .detail-type-row{ display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 17px; }
.festival-vendor-map .detail-category-pill, .festival-vendor-map .detail-subcategory-pill, .festival-vendor-map .detail-type-pill, .festival-vendor-map .detail-kid-pill{ display: inline-flex; align-items: center; gap: 6px; min-height: 28px; border-radius: 999px; padding: 4px 9px; font-size: .78rem; font-weight: 600; line-height: 1.2; }
.festival-vendor-map .detail-category-pill{ background: var(--category-presentation, var(--category)); color: var(--map-white); }
.festival-vendor-map .detail-subcategory-pill{ border: 1px solid var(--map-line); background: var(--map-bg-light); color: #49463b; font-weight: 400; }
.festival-vendor-map .detail-type-pill{ border: 1px solid #8c856f; background: var(--map-paper); color: #3e3a2d; text-transform: uppercase; letter-spacing: 0; font-size: .7rem; }
.festival-vendor-map .detail-stall{ display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px 7px; min-height: 34px; margin: 0; color: var(--map-muted); font-size: .84rem; font-weight: 400; line-height: 1.2; }
.festival-vendor-map .detail-stall strong{ color: var(--map-black); font-size: 1.02rem; font-weight: 700; }
.festival-vendor-map .stall-reference-list{ display: inline-flex; flex-wrap: wrap; align-items: center; gap: 5px 4px; min-width: 0; }
.festival-vendor-map .stall-reference-pill{ display: inline-flex; align-items: center; max-width: 100%; border-radius: 999px; background: #fff4dc; color: #2f2a20; padding: 3px 8px; font-weight: 600; line-height: 1.15; }
.festival-vendor-map .stall-reference-separator{ color: #7c7464; font-weight: 600; line-height: 1; }
.festival-vendor-map .detail-stall .stall-reference-list{ flex: 1 1 auto; }
.festival-vendor-map .detail-stall .stall-reference-pill{ font-size: .84rem; }
.festival-vendor-map .stall-label .stall-reference-pill{ font-size: .74rem; font-weight: 600; }
.festival-vendor-map .detail-kid-pill{ display: inline-flex; align-items: center; justify-content: center; align-self: center; gap: 7px; min-height: 34px; margin: 0; padding: 5px 10px 5px 7px; border: 1px solid color-mix(in srgb, #a02eff 62%, var(--map-line)); border-radius: 999px; background: color-mix(in srgb, #a02eff 10%, var(--map-paper)); color: #4b136a; line-height: 1.1; white-space: nowrap; }
.festival-vendor-map .detail-kid-icon{ display: inline-grid; place-items: center; flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; background: #a02eff; color: var(--map-white); line-height: 0; }
.festival-vendor-map .detail-kid-icon svg{ display: block; width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.festival-vendor-map .detail-about-divider{ display: flex; align-items: center; gap: 12px; margin: 20px 0 13px; color: #5f5949; font-size: .72rem; font-weight: 700; line-height: 1.2; text-transform: uppercase; }
.festival-vendor-map .detail-about-divider span:first-child{ flex: 0 0 auto; }
.festival-vendor-map .detail-about-divider span:last-child{ flex: 1; height: 1px; background: var(--map-line); }
.festival-vendor-map .detail-public-meta{ display: flex; flex-wrap: wrap; gap: 9px 18px; margin: 0 0 16px; color: var(--map-muted); font-size: .86rem; font-weight: 300; }
.festival-vendor-map .detail-public-meta-item{ display: inline-flex; align-items: center; gap: 7px; margin: 0; line-height: 1.25; }
.festival-vendor-map .detail-public-meta-item svg{ width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
.festival-vendor-map .detail-public-meta-item--award{ flex: 1 0 100%; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: start; }
.festival-vendor-map .detail-public-meta-icon{ width: 18px; height: 18px; display: block; flex: 0 0 auto; }
.festival-vendor-map .detail-award-icon{ opacity: .62; }
.festival-vendor-map .detail-award-text{ min-width: 0; overflow-wrap: anywhere; }
.festival-vendor-map .detail-sheet .primary-button{ width: 100%; margin-top: 16px; }
.festival-vendor-map .entity-action-button{ display: inline-flex; align-items: center; justify-content: center; background: var(--action-color); color: var(--map-white); text-transform: uppercase; letter-spacing: 0; font-weight: 700; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .16); }
.festival-vendor-map .entity-action-button:hover{ filter: brightness(.92); }
.festival-vendor-map .entity-action-button:active{ transform: translateY(1px); filter: brightness(.86); }
.festival-vendor-map .entity-action-button:disabled{ opacity: .55; cursor: not-allowed; filter: grayscale(.15); }
.festival-vendor-map .detail-description{ margin: 0; padding: 4px 0 20px; border-bottom: 1px solid var(--map-line); color: #38352b; line-height: 1.7; font-weight: 300; user-select: text; }
.festival-vendor-map .toast{ position: fixed; z-index: 80; left: 50%; bottom: 24px; transform: translateX(-50%); display: flex; align-items: center; gap: 18px; max-width: calc(100% - 30px); padding: 12px 16px; border-radius: 10px; background: var(--map-black); color: var(--map-white); box-shadow: var(--map-shadow); }
.festival-vendor-map .toast[hidden]{ display: none; }
.festival-vendor-map .toast button{ border: 0; background: transparent; color: var(--map-white); text-decoration: underline; font-weight: 600; cursor: pointer; }
.festival-vendor-map .mobile-only{ display: inline-flex; align-items: center; justify-content: center; }
.festival-vendor-map .mobile-filter-chips{ display: flex; flex-wrap: nowrap; gap: 7px; max-width: 100%; margin-top: 8px; overflow-x: auto; padding: 1px 2px 3px; white-space: nowrap; scrollbar-width: thin; }
.festival-vendor-map .mobile-filter-chips[hidden]{ display: none; }
.festival-vendor-map .mobile-filter-chips .filter-chip{ flex: 0 0 auto; min-height: 30px; padding: 4px 8px 4px 10px; font-size: .76rem; }
.festival-vendor-map .open-map, .festival-vendor-map #close-map{ display: none !important; }
.festival-vendor-map :focus-visible{ outline: 3px solid var(--map-focus) !important; outline-offset: 3px; }

@media (min-width: 900px) and (max-width: 1139px) {
  .festival-vendor-map .app-shell{ grid-template-columns: clamp(320px, 35vw, 360px) minmax(0, 1fr); min-height: 600px; }
  .festival-vendor-map .site-header{ min-height: 104px; grid-template-columns: auto minmax(0, 1fr); gap: 12px; padding: 10px 14px 12px 18px; }
  .festival-vendor-map .site-header::after{ right: 0; width: min(62vw, 290px); height: 5px; }
  .festival-vendor-map .site-title-primary{ font-size: clamp(1rem, 2vw, 1.28rem); }
  .festival-vendor-map .site-title-map{ font-size: clamp(1.32rem, 3vw, 1.75rem); }
  .festival-vendor-map .site-logo{ height: clamp(66px, 8vw, 76px); max-width: min(96px, 12vw); }
  .festival-vendor-map .sticky-search{ padding-block: 9px; }
  .festival-vendor-map .directory-panel{ padding-inline: 12px; }
  .festival-vendor-map .directory-footer, .festival-vendor-map .sticky-search{ margin-inline: -12px; padding-inline: 12px; }
  .festival-vendor-map .category-navigation{ --sheet-category-size: clamp(44px, 5vw, 50px); gap: 4px; }
  .festival-vendor-map .map-section{ padding: 12px; }
  .festival-vendor-map .map-header{ min-height: 62px; padding-bottom: 8px; }
  .festival-vendor-map .map-header h2{ font-size: clamp(1.72rem, 3.4vw, 2.05rem); }
  .festival-vendor-map .map-stage{ min-height: 0; }
  .festival-vendor-map .detail-sheet{ top: 50%; bottom: auto; transform: translate(-50%, -50%); width: min(650px, calc(100% - 28px)); max-height: min(680px, calc(100dvh - 32px)); overflow: auto; padding: 26px 18px 20px; border-radius: 20px; }
  .festival-vendor-map .sheet-handle{ display: none; }
  .festival-vendor-map .detail-sheet h2{ font-size: 1.45rem; }
  .festival-vendor-map .detail-title-row{ grid-template-columns: 48px minmax(0, 1fr); gap: 11px; padding-right: 44px; }
  .festival-vendor-map .detail-category-icon{ width: 48px; height: 48px; }
  .festival-vendor-map .detail-category-icon svg{ width: 25px; height: 25px; }
  .festival-vendor-map .detail-summary, .festival-vendor-map .detail-facts{ gap: 6px; }
  .festival-vendor-map .detail-category-pill, .festival-vendor-map .detail-subcategory-pill, .festival-vendor-map .detail-type-pill, .festival-vendor-map .detail-kid-pill{ font-size: .74rem; }
  .festival-vendor-map .detail-kid-pill{ min-height: 32px; padding: 5px 9px 5px 7px; white-space: normal; }
  .festival-vendor-map .detail-kid-icon{ flex-basis: 21px; width: 21px; height: 21px; }
  .festival-vendor-map .toast{ bottom: 18px; }
  .festival-vendor-map .map-controls{ top: 10px; right: 10px; }
  .festival-vendor-map .map-controls button:last-child{ max-width: none; }
  .festival-vendor-map .prototype-note{ font-size: .68rem; }
}

@media (max-width: 899px) {
  .festival-vendor-map .app-shell{ height: auto; min-height: 0; display: block; overflow: visible; }
  .festival-vendor-map .site-header{ min-height: 104px; grid-template-columns: auto minmax(0, 1fr); gap: 12px; padding: 10px 14px 12px 18px; }
  .festival-vendor-map .site-header::after{ right: 0; width: min(62vw, 290px); height: 5px; }
  .festival-vendor-map .site-title-primary{ font-size: clamp(1rem, 4.8vw, 1.28rem); }
  .festival-vendor-map .site-title-map{ font-size: clamp(1.32rem, 7vw, 1.75rem); }
  .festival-vendor-map .site-logo{ height: clamp(66px, 18vw, 76px); max-width: min(96px, 26vw); }
  .festival-vendor-map .directory-panel{ height: auto; min-height: 0; display: block; overflow: visible; padding: 0 14px 90px; border: 0; }
  .festival-vendor-map .results-scroll{ display: block; overflow: visible; min-height: 0; padding-bottom: 0; }
  .festival-vendor-map .stall-results-area{ display: block; overflow: visible; min-height: 0; padding-bottom: 0; }
  .festival-vendor-map .tabs{ position: static; margin-top: 18px; }
  .festival-vendor-map .directory-footer{ position: sticky; bottom: 0; margin: 18px -14px -90px; padding: 16px 14px max(16px, env(safe-area-inset-bottom)); box-shadow: 0 -8px 24px rgba(36, 33, 28, .11); }
  .festival-vendor-map .sticky-search{ position: sticky; z-index: 30; top: 0; margin: 0 -14px; padding: 10px 14px 9px; background: rgba(255, 254, 248, .97); border-bottom: 1px solid var(--map-line); box-shadow: none; }
  .festival-vendor-map .sticky-search > label{ font-size: .82rem; }
  .festival-vendor-map .search-row{ align-items: center; }
  .festival-vendor-map .filter-panel{ position: fixed; z-index: 46; left: 0; right: 0; top: auto; bottom: 0; max-height: min(82dvh, calc(100dvh - 24px)); overflow-y: auto; overscroll-behavior: contain; margin: 0; padding: 16px 14px max(18px, env(safe-area-inset-bottom)); border: 1px solid var(--map-line); border-bottom: 0; border-radius: 22px 22px 0 0; background: rgba(255, 254, 248, .99); box-shadow: 0 -18px 42px rgba(34, 30, 20, .24); transform: translateY(0); transition: transform .18s ease, visibility .18s ease; }
  .festival-vendor-map .filter-panel.mobile-collapsed{ visibility: hidden; pointer-events: none; transform: translateY(105%); }
  .festival-vendor-map .filter-panel.is-open{ visibility: visible; pointer-events: auto; transform: translateY(0); }
  .festival-vendor-map .filter-sheet-heading{ position: sticky; z-index: 2; top: -16px; margin: -16px -14px 4px; padding: 15px 14px 10px; background: rgba(255, 254, 248, .99); border-bottom: 1px solid rgba(201, 194, 170, .7); }
  .festival-vendor-map .filter-sheet-close{ display: grid; width: 40px; height: 40px; min-width: 40px; min-height: 40px; font-size: 0; }
  .festival-vendor-map .filter-panel .filter-chips{ display: none; }
  .festival-vendor-map .filter-show-results{ position: sticky; bottom: calc(-1 * max(18px, env(safe-area-inset-bottom))); display: flex; width: 100%; margin-top: 16px; justify-content: center; background: var(--festival-orange); }
  .festival-vendor-map .filter-backdrop{ position: fixed; inset: 0; width: auto; background: rgba(5, 5, 4, .42); }
  .festival-vendor-map .category-navigation{ --sheet-category-size: clamp(44px, calc((100vw - 92px) / 7), 58px); display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: clamp(3px, 1vw, 10px); margin: 7px -4px -1px; padding: 13px 4px 16px; overflow: visible; }
  .festival-vendor-map .category-buttons{ display: contents; }
  .festival-vendor-map .category-icon-button{ justify-self: center; flex-basis: auto; width: var(--sheet-category-size); height: var(--sheet-category-size); min-width: 44px; min-height: 44px; }
  .festival-vendor-map .category-icon-button svg{ width: clamp(22px, calc(var(--sheet-category-size) * .52), 30px); height: clamp(22px, calc(var(--sheet-category-size) * .52), 30px); }
  .festival-vendor-map .open-map{ position: fixed; z-index: 15; right: 16px; bottom: calc(76px + env(safe-area-inset-bottom)); box-shadow: var(--map-shadow); }
  .festival-vendor-map .open-map, .festival-vendor-map #close-map{ display: inline-flex !important; align-items: center; justify-content: center; }
  .festival-vendor-map button#open-map.open-map.primary-button{ background: #6b6b6b !important; color: #ffffff !important; text-transform: uppercase; }
  .festival-vendor-map button#open-map.open-map.primary-button:hover, .festival-vendor-map button#open-map.open-map.primary-button:focus-visible, .festival-vendor-map button#open-map.open-map.primary-button:active{ background: #5f5f5f !important; color: #ffffff !important; filter: none; }
  .festival-vendor-map .map-section{ display: none; position: fixed; z-index: 40; inset: 14px; min-height: 0; padding: 12px; border-radius: 18px; background: #f1e8d8; box-shadow: var(--map-shadow); }
  .festival-vendor-map .map-section.is-open{ display: flex; }
  .festival-vendor-map .map-header{ min-height: 62px; padding-bottom: 8px; }
  .festival-vendor-map .map-header h2{ font-size: clamp(1.72rem, 6vw, 2.08rem); }
  .festival-vendor-map .map-stage{ height: auto; min-height: 0; }
  .festival-vendor-map .detail-sheet{ top: 50%; bottom: auto; transform: translate(-50%, -50%); width: min(650px, calc(100% - 28px)); max-height: min(680px, calc(100dvh - 32px)); overflow: auto; padding: 26px 18px 20px; border-radius: 20px; }
  .festival-vendor-map .sheet-handle{ display: none; }
  .festival-vendor-map .detail-sheet h2{ font-size: 1.45rem; }
  .festival-vendor-map .detail-title-row{ grid-template-columns: 48px minmax(0, 1fr); gap: 11px; padding-right: 44px; }
  .festival-vendor-map .detail-category-icon{ width: 48px; height: 48px; }
  .festival-vendor-map .detail-category-icon svg{ width: 25px; height: 25px; }
  .festival-vendor-map .detail-summary, .festival-vendor-map .detail-facts{ gap: 6px; }
  .festival-vendor-map .detail-category-pill, .festival-vendor-map .detail-subcategory-pill, .festival-vendor-map .detail-type-pill, .festival-vendor-map .detail-kid-pill{ font-size: .74rem; }
  .festival-vendor-map .detail-kid-pill{ min-height: 32px; padding: 5px 9px 5px 7px; white-space: normal; }
  .festival-vendor-map .detail-kid-icon{ flex-basis: 21px; width: 21px; height: 21px; }
  .festival-vendor-map .toast{ bottom: 18px; }
  .festival-vendor-map .map-controls{ top: 10px; right: 10px; }
  .festival-vendor-map .map-controls button:last-child{ max-width: none; }
  .festival-vendor-map .prototype-note{ font-size: .68rem; }
}

@media (max-width: 767px) {
  .festival-vendor-map .directory-footer{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 10px; }
  .festival-vendor-map .directory-footer.has-active-filters{ grid-template-columns: minmax(0, 3fr) minmax(104px, 2fr); }
  .festival-vendor-map .directory-footer .mobile-filter-actions{ --mobile-filter-control-height: 50px; display: flex; align-items: center; gap: 8px; min-width: 0; }
  .festival-vendor-map .directory-footer .mobile-clear-filters{ display: inline-flex; flex: 0 0 var(--mobile-filter-control-height); align-items: center; justify-content: center; width: var(--mobile-filter-control-height); min-width: var(--mobile-filter-control-height); max-width: var(--mobile-filter-control-height); height: var(--mobile-filter-control-height); min-height: var(--mobile-filter-control-height); max-height: var(--mobile-filter-control-height); padding: 0; border: 1px solid #b8ad9b; border-radius: 50%; background: var(--map-white) !important; color: var(--map-black) !important; box-shadow: 0 2px 6px rgba(36, 33, 28, .14); cursor: pointer; font-size: 0; line-height: 0; }
  .festival-vendor-map .directory-footer .mobile-clear-filters span{ position: relative; display: block; width: 26px; height: 26px; border-radius: 50%; background: var(--map-black) !important; color: var(--map-white) !important; font-size: 0; line-height: 0; pointer-events: none; }
  .festival-vendor-map .directory-footer .mobile-clear-filters span::before, .festival-vendor-map .directory-footer .mobile-clear-filters span::after{ content: ""; position: absolute; left: 50%; top: 50%; width: 14px; height: 2px; border-radius: 999px; background: var(--map-white) !important; transform-origin: center; }
  .festival-vendor-map .directory-footer .mobile-clear-filters span::before{ transform: translate(-50%, -50%) rotate(45deg); }
  .festival-vendor-map .directory-footer .mobile-clear-filters span::after{ transform: translate(-50%, -50%) rotate(-45deg); }
  .festival-vendor-map .directory-footer .mobile-clear-filters[hidden]{ display: none; }
  .festival-vendor-map .directory-footer .mobile-clear-filters:hover, .festival-vendor-map .directory-footer .mobile-clear-filters:focus-visible, .festival-vendor-map .directory-footer .mobile-clear-filters:active{ border-color: var(--map-black); background: #fffdf8 !important; color: var(--map-black) !important; box-shadow: 0 3px 8px rgba(36, 33, 28, .18); }
  .festival-vendor-map .directory-footer #mobile-filter-button, .festival-vendor-map .directory-footer #open-map{ position: static; width: 100%; min-height: 48px; padding: 9px 10px; font-size: .82rem; line-height: 1.1; }
  .festival-vendor-map .directory-footer .mobile-filter-actions #mobile-filter-button{ flex: 1 1 auto; min-width: 0; width: auto; height: var(--mobile-filter-control-height); min-height: var(--mobile-filter-control-height); max-height: var(--mobile-filter-control-height); }
  .festival-vendor-map .directory-footer #open-map{ box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .12); }
  .festival-vendor-map .app-shell.mobile-map-open .directory-footer{ position: fixed; left: 0; right: 0; bottom: 0; margin: 0; }
  .festival-vendor-map .app-shell.mobile-map-open .directory-footer .mobile-filter-actions{ grid-column: 1 / -1; }
  .festival-vendor-map .app-shell.mobile-map-open .directory-footer #open-map{ display: none !important; }
  .festival-vendor-map .map-section{ inset: 0; border-radius: 0; box-shadow: none; }
  .festival-vendor-map .map-header{ align-items: center; }
  .festival-vendor-map .map-header h2{ font-size: clamp(1.9rem, 8vw, 2.25rem); }
  .festival-vendor-map .map-stage{ height: calc(100vh - 94px); min-height: 0; }
  .festival-vendor-map .selection-host .selection-halo-wide{ filter: drop-shadow(0 0 8px var(--selection-halo, #ffce3a)); }
  .festival-vendor-map .selection-host .selection-halo-medium{ filter: drop-shadow(0 0 4px var(--selection-halo, #ffce3a)); }
  .festival-vendor-map .selection-host .selection-halo-tight{ filter: drop-shadow(0 0 1px rgba(255, 255, 255, .72)) drop-shadow(0 0 3px var(--selection-halo, #ffce3a)); }
  .festival-vendor-map .selection-host .selection-shape, .festival-vendor-map .selection-host .selection-cluster{ filter: drop-shadow(0 0 1px rgba(0, 0, 0, .62)) drop-shadow(0 0 3px var(--selection-glow, #ffce3a)); }
  .festival-vendor-map .selection-host .selection-halo-wide{ stroke-width: 18px; opacity: .28; }
  .festival-vendor-map .selection-host .selection-halo-medium{ stroke-width: 11px; opacity: .52; }
  .festival-vendor-map .selection-host .selection-halo-tight{ stroke-width: 6px; opacity: .86; }
  .festival-vendor-map .result-host .result-highlight-cluster-outer{ stroke-width: 10px; opacity: .46; }
  .festival-vendor-map .result-host .result-highlight-cluster-main{ stroke-width: 5px; }
  .festival-vendor-map .result-host .result-highlight-cluster-keyline{ stroke-width: 2px; }
}

@media (max-width: 374px) {
  .festival-vendor-map .category-navigation{ --sheet-category-size: 48px; grid-template-columns: repeat(4, minmax(0, 1fr)); row-gap: 9px; }
}

@media (prefers-reduced-motion: reduce) {
  .festival-vendor-map, .festival-vendor-map *, .festival-vendor-map *::before, .festival-vendor-map *::after{ scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
