.fmb-map { width:100%; max-width:100%; min-width:0; margin-top:clamp(1.5rem,4vw,3rem); overflow:hidden; overflow:clip; }
.fmb-map-head { max-width:54rem; margin:0 auto clamp(1.5rem,4vw,3rem); text-align:center; }
.fmb-map-head h3 { margin:.65rem 0 1rem; color:#111; font-size:clamp(2.7rem,7vw,5.8rem); line-height:.92; letter-spacing:0; }
.fmb-map-head p { max-width:43rem; margin:0 auto; color:#626660; font-size:1.05rem; line-height:1.7; }
.fmb-map-stage { position:relative; width:min(53rem,100%); max-width:100%; min-width:0; margin:0 auto; isolation:isolate; background:transparent; }
.fmb-map-svg { display:block; width:100%; max-width:100%; height:auto; overflow:hidden; background:transparent; }
.fmb-country-land { fill:#101112; opacity:0; transition:opacity .9s .18s ease; }
.fmb-country-texture { fill:url(#fmbMapTexture); opacity:0; transition:opacity .9s .35s ease; }
.fmb-country-outline-glow { fill:none; stroke:rgba(255,255,255,.14); stroke-width:8; filter:url(#fmbSoftGlow); opacity:0; }
.fmb-country-outline { fill:none; stroke:rgba(255,255,255,.92); stroke-width:1.25; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; stroke-dasharray:1; stroke-dashoffset:1; }
.fmb-map.is-ready.is-in-view .fmb-country-land { opacity:1; }
.fmb-map.is-ready.is-in-view .fmb-country-texture { opacity:.72; }
.fmb-map.is-ready.is-in-view .fmb-country-outline-glow { opacity:.65; transition:opacity .8s .35s ease; }
.fmb-map.is-ready.is-in-view .fmb-country-outline { animation:fmbOutlineDraw 1.35s cubic-bezier(.3,.7,.2,1) forwards; }
.fmb-route { fill:none; vector-effect:non-scaling-stroke; stroke-linecap:round; stroke-dashoffset:1; opacity:0; }
.fmb-route-one { stroke:#d9a633; stroke-width:1.45; stroke-dasharray:1; }
.fmb-route-two { stroke:rgba(255,255,255,.82); stroke-width:1.35; stroke-dasharray:.018 .023; }
.fmb-route-three { stroke:url(#fmbRouteGold); stroke-width:1.55; stroke-dasharray:.032 .025; }
.fmb-map.is-ready.is-in-view .fmb-route-one { animation:fmbRouteDraw 1s 1.15s ease forwards; }
.fmb-map.is-ready.is-in-view .fmb-route-two { animation:fmbRouteDraw 1s 1.35s ease forwards; }
.fmb-map.is-ready.is-in-view .fmb-route-three { animation:fmbRouteDraw 1.1s 1.55s ease forwards; }
.fmb-route-runner { fill:#fff4c2; filter:url(#fmbGoldGlow); opacity:0; }
.fmb-map.is-in-view .fmb-route-runner { animation:fmbRunnerIn .5s 2.2s ease forwards; }
.fmb-city { cursor:pointer; opacity:0; transform-box:fill-box; transform-origin:center; outline:none; transition:opacity .35s ease,filter .25s ease; }
.fmb-map.is-ready.is-in-view .fmb-city { animation:fmbCityIn .5s cubic-bezier(.2,.8,.2,1) forwards; animation-delay:calc(1.05s + var(--city-index) * .13s); }
.fmb-city-pulse { fill:none; stroke:rgba(217,166,51,.48); stroke-width:1.2; opacity:.38; transform-box:fill-box; transform-origin:center; }
.fmb-map.is-in-view .fmb-city-pulse { animation:fmbCityPulse 3.4s calc(2s + var(--city-index) * .18s) ease-out infinite; }
.fmb-city-ring { fill:rgba(217,166,51,.12); stroke:#d9a633; stroke-width:1.8; filter:url(#fmbGoldGlow); transition:r .2s ease,filter .2s ease; }
.fmb-city-core { fill:#fff; }
.fmb-city text { fill:#fff; font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif; font-size:14px; font-weight:850; letter-spacing:.04em; paint-order:stroke; stroke:rgba(5,5,5,.9); stroke-width:4px; stroke-linejoin:round; }
.fmb-city:hover .fmb-city-ring, .fmb-city:focus .fmb-city-ring, .fmb-city.is-active .fmb-city-ring { r:9; filter:url(#fmbGoldGlow); }
.fmb-city:hover .fmb-city-pulse, .fmb-city:focus .fmb-city-pulse, .fmb-city.is-active .fmb-city-pulse { stroke:rgba(255,211,101,.9); }
.fmb-city-card { position:absolute; z-index:4; width:min(18rem,calc(100% - 2rem)); padding:1rem; border:1px solid rgba(255,255,255,.12); border-radius:1rem; background:rgba(10,10,10,.78); color:#fff; -webkit-backdrop-filter:blur(15px); backdrop-filter:blur(15px); box-shadow:0 24px 70px rgba(0,0,0,.34); opacity:0; visibility:hidden; transform:translate(-50%,calc(-100% - 1.25rem)) translateY(.5rem); transition:opacity .2s ease,transform .2s ease,visibility .2s; }
.fmb-city-card.is-visible { opacity:1; visibility:visible; transform:translate(-50%,calc(-100% - 1.25rem)) translateY(0); }
.fmb-city-card.is-left { transform:translate(-88%,calc(-100% - 1.25rem)) translateY(.5rem); }
.fmb-city-card.is-left.is-visible { transform:translate(-88%,calc(-100% - 1.25rem)) translateY(0); }
.fmb-city-card-close { position:absolute; top:.55rem; right:.6rem; width:1.8rem; height:1.8rem; display:grid; place-items:center; border:0; border-radius:50%; background:rgba(255,255,255,.1); color:#fff; font-size:1.15rem; cursor:pointer; }
.fmb-city-card-kicker { display:block; padding-right:2rem; color:#b7b9b5; font-size:.67rem; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.fmb-city-card-title { display:block; margin:.35rem 0 .7rem; font-size:1.35rem; }
.fmb-city-card-events { display:grid; gap:.5rem; }
.fmb-city-event { padding:.6rem .7rem; border-left:2px solid #d9a633; background:rgba(255,255,255,.055); font-size:.78rem; line-height:1.4; }
.fmb-city-event small { display:block; color:#b9bbb7; }
.fmb-route-legend { width:min(64rem,100%); margin:1rem auto 0; display:flex; justify-content:center; flex-wrap:wrap; gap:.65rem 1.15rem; color:#5d615c; font-size:.76rem; font-weight:750; }
.fmb-route-legend span { display:inline-flex; align-items:center; gap:.45rem; }
.fmb-route-legend i { width:2rem; height:2px; display:block; }
.fmb-route-legend .route-one { background:#d9a633; }
.fmb-route-legend .route-two { background:repeating-linear-gradient(90deg,#8f918d 0 4px,transparent 4px 8px); }
.fmb-route-legend .route-three { background:repeating-linear-gradient(90deg,#d9a633 0 6px,transparent 6px 10px); }
.fmb-map-source { display:block; width:max-content; max-width:100%; margin:.7rem auto 0; color:#9a9d98; text-align:center; font-size:.62rem; text-decoration:none; border-bottom:1px solid transparent; }
.fmb-map-source:hover { color:#555; border-bottom-color:currentColor; }
.fmb-map-error { width:min(38rem,100%); margin:4rem auto; padding:1rem; border:1px solid rgba(0,0,0,.1); border-radius:.8rem; color:#626660; text-align:center; }

.fmb-location-poll { position:relative; width:min(53rem,100%); max-width:100%; min-width:0; margin:clamp(1.5rem,4vw,2.5rem) auto 0; display:grid; grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr); gap:clamp(1.5rem,4vw,3rem); align-items:center; padding:clamp(1.25rem,3vw,2.25rem); border:1px solid #242424; border-radius:1.35rem; background:#0a0a0a; color:#fff; box-shadow:0 24px 65px rgba(0,0,0,.14); }
.fmb-location-poll::before { position:absolute; top:-1.55rem; left:50%; width:1px; height:1.55rem; content:""; background:linear-gradient(180deg,transparent,#d9a633); }
.fmb-location-poll-intro h4 { margin:.65rem 0 .8rem; font-size:clamp(2rem,4.5vw,4rem); line-height:.96; }
.fmb-location-poll-intro p { margin:0; color:#bfc1bd; line-height:1.6; }
.fmb-location-poll-intro .eyebrow { display:block; color:#a8aaa5; }
.fmb-location-poll-icon { width:3rem; height:3rem; display:grid; place-items:center; margin-bottom:1.15rem; border-radius:50%; background:#fff; color:#050505; box-shadow:0 0 0 .4rem rgba(255,255,255,.065); }
.fmb-location-poll-icon svg { width:1.55rem; height:1.55rem; stroke-width:1.8; }
.fmb-location-form { min-width:0; padding:0 0 0 clamp(1.25rem,3vw,2rem); border:0; border-left:1px solid rgba(255,255,255,.13); border-radius:0; background:transparent; overflow:hidden; }
.fmb-form-progress { height:3px; overflow:hidden; border-radius:999px; background:#303030; }
.fmb-form-progress span { display:block; width:33.333%; height:100%; border-radius:inherit; background:#fff; transition:width .35s cubic-bezier(.2,.8,.2,1); }
.fmb-form-step-label { display:flex; justify-content:space-between; gap:1rem; margin:.75rem 0 1.2rem; color:#8f918d; font-size:.7rem; font-weight:850; text-transform:uppercase; letter-spacing:.06em; }
.fmb-form-steps { position:relative; }
.fmb-form-step { display:none; min-width:0; margin:0; border:0; padding:0; }
.fmb-form-step.is-active { display:grid; gap:.8rem; animation:fmbStepIn .38s cubic-bezier(.2,.8,.2,1) both; }
.fmb-form-step.is-back { animation-name:fmbStepBack; }
.fmb-form-step legend { padding:0; color:#fff; font-size:clamp(1.35rem,3vw,2rem); font-weight:900; }
.fmb-form-step > p { margin:0 0 .3rem; color:#aeb0ac; font-size:.88rem; line-height:1.5; }
.fmb-form-step label { display:grid; gap:.4rem; color:#d8d9d6; font-size:.76rem; font-weight:850; }
.fmb-form-step input, .fmb-form-step textarea { width:100%; border:1px solid rgba(255,255,255,.13); border-radius:.7rem; outline:0; padding:.9rem; background:#222; color:#fff; font:inherit; transition:border-color .18s ease,background .18s ease; }
.fmb-form-step textarea { min-height:7rem; resize:vertical; }
.fmb-form-step input:focus, .fmb-form-step textarea:focus { border-color:#fff; background:#282828; }
.fmb-form-step input::placeholder, .fmb-form-step textarea::placeholder { color:#858782; }
.fmb-step-actions { display:grid; grid-template-columns:auto 1fr; gap:.65rem; }
.fmb-step-next, .fmb-step-submit, .fmb-step-back { min-height:3rem; border-radius:.68rem; padding:0 1rem; font:inherit; font-weight:900; cursor:pointer; }
.fmb-step-next, .fmb-step-submit { border:0; background:#fff; color:#050505; }
.fmb-step-back { border:1px solid rgba(255,255,255,.14); background:transparent; color:#fff; }
.fmb-step-submit:disabled { cursor:wait; opacity:.65; }
.fmb-form-honeypot { position:absolute!important; left:-9999px!important; width:1px!important; height:1px!important; opacity:0!important; }
.fmb-location-status { min-height:1.2rem; margin:.75rem 0 0; color:#bfc1bd; font-size:.82rem; font-weight:800; }
.fmb-location-status.is-success { color:#8fe0ac; }
.fmb-location-status.is-error { color:#ffaaa3; }
.fmb-location-form.is-complete .fmb-form-progress, .fmb-location-form.is-complete .fmb-form-step-label, .fmb-location-form.is-complete .fmb-form-steps { display:none; }
.fmb-location-form.is-complete .fmb-location-status { min-height:10rem; display:grid; place-items:center; padding:1rem; color:#fff; text-align:center; font-size:1.05rem; line-height:1.6; }

@keyframes fmbOutlineDraw { to { stroke-dashoffset:0; } }
@keyframes fmbRouteDraw { 0% { opacity:0; stroke-dashoffset:1; } 15% { opacity:1; } 100% { opacity:1; stroke-dashoffset:0; } }
@keyframes fmbCityIn { from { opacity:0; } to { opacity:1; } }
@keyframes fmbCityPulse { 0% { opacity:.5; transform:scale(.65); } 72%,100% { opacity:0; transform:scale(1.65); } }
@keyframes fmbRunnerIn { to { opacity:.85; } }
@keyframes fmbStepIn { from { opacity:0; transform:translateX(1.5rem); } to { opacity:1; transform:translateX(0); } }
@keyframes fmbStepBack { from { opacity:0; transform:translateX(-1.5rem); } to { opacity:1; transform:translateX(0); } }

@media (max-width:760px) {
  .fmb-map { width:100%; max-width:100%; }
  .fmb-map-head { text-align:left; }
  .fmb-map-head h3 { font-size:clamp(2.55rem,12vw,4rem); }
  .fmb-map-head p { font-size:.96rem; line-height:1.6; }
  .fmb-map-stage { width:100%; max-width:100%; height:auto; display:block; margin-inline:auto; overflow:hidden; }
  .fmb-map-svg { width:min(78vw,22rem); max-width:calc(100% - .5rem); height:auto; max-height:none; min-height:0; margin:0 auto; overflow:hidden; }
  .fmb-city text { font-size:12px; stroke-width:3.5px; }
  .fmb-city-card { left:.75rem!important; right:.75rem; bottom:.75rem; top:auto!important; width:auto; transform:translateY(.5rem); }
  .fmb-city-card.is-left, .fmb-city-card.is-left.is-visible, .fmb-city-card.is-visible { transform:translateY(0); }
  .fmb-route-legend { justify-content:flex-start; display:grid; grid-template-columns:1fr; padding:0 .35rem; }
  .fmb-location-poll { width:100%; grid-template-columns:minmax(0,1fr); gap:1.2rem; padding:1rem; border-radius:1.1rem; }
  .fmb-location-poll-intro h4 { margin:.55rem 0 .65rem; font-size:clamp(1.75rem,8vw,2.35rem); }
  .fmb-location-poll-intro p { font-size:.9rem; }
  .fmb-location-poll-icon { width:2.65rem; height:2.65rem; margin-bottom:1rem; }
  .fmb-location-form { width:100%; max-width:100%; padding:1rem 0 0; border-left:0; border-top:1px solid rgba(255,255,255,.13); }
  .fmb-form-step input, .fmb-form-step textarea { min-width:0; max-width:100%; }
  .fmb-step-actions { grid-template-columns:1fr; }
  .fmb-step-back { order:2; }
}
@media (max-width:760px) and (orientation:landscape) {
  .fmb-map-svg { width:min(44vw,20rem); }
}
@media (prefers-reduced-motion:reduce) {
  .fmb-country-land, .fmb-country-texture, .fmb-country-outline-glow, .fmb-route, .fmb-city, .fmb-route-runner { opacity:1!important; animation:none!important; transition:none!important; }
  .fmb-country-outline { stroke-dashoffset:0; }
  .fmb-city-pulse { animation:none!important; opacity:.28; }
  .fmb-form-step.is-active { animation:none; }
}
