.theme-bright.festival-map-page{flex-direction:column;height:100dvh;min-height:100dvh;display:flex;overflow:hidden}.theme-bright.festival-map-page header.map-header{background:var(--blue);border-bottom:4px solid var(--ink);flex-shrink:0}.theme-bright.festival-map-page .map-header .header-inner{z-index:2;justify-content:space-between;align-items:center;gap:16px;max-width:1180px;margin:0 auto;padding:20px 24px;display:flex;position:relative}.theme-bright.festival-map-page .map-header-title{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.02em;color:var(--cream);margin:0;font-size:clamp(24px,5vw,40px);line-height:.95}.theme-bright.festival-map-page .map-header-back{font-family:var(--font-anton), "Anton", sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);background:var(--cream);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);flex-shrink:0;padding:8px 16px;font-size:13px;text-decoration:none;transition:transform .15s,box-shadow .15s;transform:rotate(2deg)}.theme-bright.festival-map-page .map-header-back:hover,.theme-bright.festival-map-page .map-header-back:focus-visible{box-shadow:6px 6px 0 var(--ink);border-color:var(--ink);transform:rotate(2deg)translate(-2px,-2px)}.theme-bright.festival-map-page .map-shell{border-bottom:4px solid var(--ink);flex:auto;min-height:0;position:relative}.theme-bright.festival-map-page .map-container{width:100%;height:100%;position:absolute;inset:0}.theme-bright.festival-map-page .map-container .mapboxgl-map,.theme-bright.festival-map-page .map-container .mapboxgl-canvas-container,.theme-bright.festival-map-page .map-container canvas.mapboxgl-canvas{width:100%!important;height:100%!important}.theme-bright.festival-map-page .map-legend-menu{z-index:5;position:absolute;bottom:28px;left:20px}.theme-bright.festival-map-page .map-search-menu{z-index:5;position:absolute;bottom:28px;right:20px}.theme-bright.festival-map-page .legend-toggle{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.06em;background:var(--cream);color:var(--ink);border:3px solid var(--ink);cursor:pointer;box-shadow:4px 4px 0 var(--ink);align-items:center;gap:8px;padding:10px 14px;font-size:13px;transition:transform .15s,box-shadow .15s;display:inline-flex}.theme-bright.festival-map-page .legend-toggle:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.theme-bright.festival-map-page .legend-toggle[aria-expanded=true]{box-shadow:6px 6px 0 var(--ink);background:var(--blue-tint);transform:translate(-2px,-2px)}.theme-bright.festival-map-page .legend-toggle-icon{font-size:16px;line-height:1}.theme-bright.festival-map-page .legend-panel{background:var(--cream);border:3px solid var(--ink);min-width:220px;box-shadow:6px 6px 0 var(--ink);padding:14px 16px;position:absolute;bottom:calc(100% + 10px);left:0}.theme-bright.festival-map-page .legend-item{letter-spacing:.04em;text-transform:uppercase;color:var(--ink);align-items:center;gap:10px;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.theme-bright.festival-map-page .legend-item:last-child{margin-bottom:0}.theme-bright.festival-map-page .legend-icon{text-align:center;flex-shrink:0;width:22px;font-size:16px}.theme-bright.festival-map-page .legend-swatch{box-sizing:border-box;border:2.5px solid;flex-shrink:0;width:18px;height:18px}.theme-bright.festival-map-page .search-panel{background:var(--cream);border:3px solid var(--ink);min-width:240px;box-shadow:6px 6px 0 var(--ink);flex-direction:column;gap:6px;padding:10px;display:flex;position:absolute;bottom:calc(100% + 10px);right:0}.theme-bright.festival-map-page .search-item{width:100%;font-family:var(--font-anton), "Anton", sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:2px solid #0000;align-items:center;gap:10px;padding:8px 10px;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,transform .15s;display:flex}.theme-bright.festival-map-page .search-item:hover,.theme-bright.festival-map-page .search-item:focus-visible{background:var(--blue-tint);border-color:var(--ink);transform:translate(-1px,-1px)}.theme-bright.festival-map-page .search-item-icon{text-align:center;flex-shrink:0;width:22px;font-size:16px}.theme-bright.festival-map-page .mapboxgl-popup-content{min-width:190px;background:var(--cream)!important;border:3px solid var(--ink)!important;color:var(--ink)!important;box-shadow:6px 6px 0 var(--ink)!important;border-radius:0!important;padding:16px 18px!important;position:relative!important}.theme-bright.festival-map-page .mapboxgl-popup-tip{border-top-color:var(--ink)!important}.theme-bright.festival-map-page .popup-icon{margin-bottom:8px;font-size:24px;display:block}.theme-bright.festival-map-page .popup-title{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.02em;color:var(--ink);margin-bottom:6px;font-size:16px}.theme-bright.festival-map-page .popup-desc{font-family:var(--font-bitter), "Bitter", serif;color:#3a3a3a;font-size:14px;line-height:1.55}.theme-bright.festival-map-page .popup-link{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--blue);text-underline-offset:3px;margin-top:10px;font-size:13px;font-weight:700;text-decoration:underline;display:inline-block}.theme-bright.festival-map-page .popup-link:hover,.theme-bright.festival-map-page .popup-link:focus-visible{color:var(--red)}.theme-bright.festival-map-page .mapboxgl-popup-close-button{width:24px!important;height:24px!important;color:var(--ink)!important;justify-content:center!important;align-items:center!important;padding:0!important;font-size:20px!important;line-height:1!important;display:flex!important;position:absolute!important;top:8px!important;right:8px!important}.theme-bright.festival-map-page .festival-marker{cursor:pointer}.theme-bright.festival-map-page .marker-body{flex-direction:column;align-items:center;transition:transform .15s;display:flex}.theme-bright.festival-map-page .festival-marker:hover .marker-body{transform:translate(-2px,-2px)scale(1.05)}.theme-bright.festival-map-page .marker-body.is-wiggling{animation:.55s festival-marker-wiggle}@keyframes festival-marker-wiggle{0%,to{transform:translate(0)rotate(0)}15%{transform:translate(-3px,2px)rotate(-8deg)}30%{transform:translate(3px,-2px)rotate(7deg)}45%{transform:translate(-2px,-1px)rotate(-5deg)}60%{transform:translate(2px,1px)rotate(4deg)}75%{transform:translate(-1px,1px)rotate(-3deg)}}.theme-bright.festival-map-page .marker-bubble{border:3px solid var(--ink);width:40px;height:40px;box-shadow:4px 4px 0 var(--ink);justify-content:center;align-items:center;font-size:18px;display:flex;transform:rotate(-4deg)}.theme-bright.festival-map-page .marker-bubble span{display:block;transform:rotate(4deg)}.theme-bright.festival-map-page .marker-label{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--ink);text-shadow:-1px -1px 0 var(--cream), 1px -1px 0 var(--cream), -1px 1px 0 var(--cream), 1px 1px 0 var(--cream);white-space:nowrap;margin-top:5px;font-size:10px}.theme-bright.festival-map-page .map-controls{z-index:5;flex-direction:column;gap:10px;display:flex;position:absolute;top:20px;right:16px}.theme-bright.festival-map-page .ctrl-btn{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.06em;background:var(--cream);color:var(--ink);border:3px solid var(--ink);cursor:pointer;box-shadow:4px 4px 0 var(--ink);white-space:nowrap;padding:10px 14px;font-size:13px;transition:transform .15s,box-shadow .15s}.theme-bright.festival-map-page .ctrl-btn:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.theme-bright.festival-map-page .map-loading{background:var(--cream);z-index:100;flex-direction:column;justify-content:center;align-items:center;gap:16px;transition:opacity .6s;display:flex;position:absolute;inset:0}.theme-bright.festival-map-page .map-loading.hidden{opacity:0;pointer-events:none}.theme-bright.festival-map-page .spinner{border:4px solid var(--blue-tint);border-top-color:var(--red);border-radius:50%;width:48px;height:48px;animation:.9s linear infinite festival-map-spin}@keyframes festival-map-spin{to{transform:rotate(360deg)}}.theme-bright.festival-map-page .map-loading p{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;letter-spacing:.1em;color:var(--ink);font-size:13px}.theme-bright.festival-map-page .map-config-notice{background:var(--cream);z-index:200;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:40px 24px;display:flex;position:absolute;inset:0}.theme-bright.festival-map-page .map-config-notice-panel{border:3px solid var(--ink);background:var(--cream);max-width:520px;box-shadow:8px 8px 0 var(--ink);padding:36px 32px}.theme-bright.festival-map-page .map-config-notice h2{font-family:var(--font-anton), "Anton", sans-serif;text-transform:uppercase;color:var(--ink);margin-bottom:12px;font-size:clamp(24px,4vw,32px)}.theme-bright.festival-map-page .map-config-notice p{font-family:var(--font-bitter), "Bitter", serif;color:#3a3a3a;font-size:16px;line-height:1.65}.theme-bright.festival-map-page .map-config-notice code{background:var(--blue-tint);border:1px solid var(--ink);padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.92em}@media (max-width:760px){.theme-bright.festival-map-page .map-header .header-inner{padding:16px 20px}.theme-bright.festival-map-page .map-legend-menu{bottom:12px;left:12px}.theme-bright.festival-map-page .map-search-menu{bottom:12px;right:12px}.theme-bright.festival-map-page .legend-panel{min-width:min(220px,100vw - 24px);left:0;right:auto}.theme-bright.festival-map-page .search-panel{min-width:min(240px,100vw - 24px);left:auto;right:0}}@media (prefers-reduced-motion:reduce){.theme-bright.festival-map-page .spinner,.theme-bright.festival-map-page .marker-body.is-wiggling{animation:none}}
