/* v12 · UAE launch map (Direction A): plots, filters, English basemap */
.lmap-sec{padding:64px 0 40px}
.lmap__bar{display:flex;flex-wrap:wrap;gap:14px 24px;align-items:center;justify-content:space-between;margin-bottom:18px}
.lmap__filters{display:flex;flex-wrap:wrap;gap:8px}
.lmap__chip{font:500 11.5px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:10px 14px;border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.lmap__chip:hover{border-color:var(--brass)}
.lmap__chip[aria-pressed=true]{background:var(--navy);color:var(--cream);border-color:var(--navy)}
.lmap__toggle{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-soft);cursor:pointer}
.lmap__toggle input{accent-color:var(--navy);width:16px;height:16px;margin:0}
.lmap__layers{display:flex;flex-wrap:wrap;gap:10px 20px}
.lmap__toggle .n{color:var(--muted);font-size:12px}
.lmap__toggle .n:not(:empty)::before{content:'('}.lmap__toggle .n:not(:empty)::after{content:')'}
.lmap{position:relative;isolation:isolate;z-index:0;border:1px solid var(--line);background:var(--sand)}
.lmap::after{content:"";position:absolute;inset:6px;border:1px solid rgba(154,123,69,.28);pointer-events:none;z-index:500}
.lmap__map{height:min(76vh,700px);min-height:520px;width:100%;background:#E9E4D8}
.leaflet-container{font-family:var(--sans)}
.lmap .leaflet-tile-pane{filter:grayscale(.9) sepia(.18) brightness(1.04) contrast(.92)}
.leaflet-control-attribution{font-size:10.5px;background:rgba(250,247,240,.85)!important}
.leaflet-bar a{color:var(--navy)!important;border-radius:0!important}
.leaflet-bar{border-radius:0!important;border:1px solid var(--line)!important;box-shadow:none!important}
/* pins */
.pin{width:22px;height:22px;border-radius:50%;background:var(--brass);border:2.5px solid var(--paper);box-shadow:0 0 0 1px var(--navy),0 4px 10px rgba(20,35,60,.35);transition:transform .18s}
.pin.is-on,.pin:hover{transform:scale(1.25);background:var(--navy);box-shadow:0 0 0 1.5px var(--brass),0 6px 16px rgba(20,35,60,.4)}
.upin{width:20px;height:20px;border-radius:50%;background:rgba(250,247,240,.95);border:3px solid #2F6F8F;box-shadow:0 0 0 1px var(--navy),0 3px 8px rgba(20,35,60,.25);transition:transform .18s;position:relative}
.upin::after{content:'';position:absolute;inset:4px;border-radius:50%;border:1.5px dashed var(--navy)}
.upin.is-on,.upin:hover{transform:scale(1.25);border-color:var(--navy)}
.ipin{width:15px;height:15px;transform:rotate(45deg);background:var(--navy);border:2px solid var(--gold-2);box-shadow:0 3px 8px rgba(20,35,60,.3)}
.ipin.is-on,.ipin:hover{background:var(--gold-2);border-color:var(--navy)}
.leaflet-tooltip.lmap__tip{background:var(--navy);color:var(--cream);border:0;border-radius:0;font:500 12px/1.3 var(--sans);letter-spacing:.04em;padding:6px 10px;box-shadow:none}
.leaflet-tooltip.lmap__tip::before{display:none}
/* card */
.lmap__card{position:absolute;top:18px;right:18px;bottom:18px;width:400px;z-index:600;background:var(--paper);border:1px solid var(--line);box-shadow:0 18px 50px rgba(20,35,60,.22);overflow:auto;padding:26px 26px 22px;color:var(--text);font-size:14px;line-height:1.55}
.lmap__card::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--brass)}
.lc__x{position:absolute;top:10px;right:10px;width:32px;height:32px;border:0;background:none;font-size:22px;line-height:1;color:var(--muted);cursor:pointer}
.lc__x:hover{color:var(--navy)}
.lc__eyebrow{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 34px 8px 0}
.lc__name{font:400 28px/1.08 var(--serif);color:var(--navy);margin:0 0 14px;letter-spacing:-.01em}
.lc__facts{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;margin:0 0 16px;font-size:13.5px}
.lc__facts dt{color:var(--muted);font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding-top:2px}
.lc__facts dd{margin:0}
.lc__price{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;margin:0 0 16px}
.lc__price .lbl{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:0 0 4px}
.lc__price .big{font:400 30px/1.1 var(--serif);color:var(--navy);margin:0}
.lc__price .big small{font:400 13px var(--sans);color:var(--muted);margin-left:4px}
.lc__price .usd{font-size:13.5px;color:var(--ink-soft);margin:2px 0 6px}
.lc__price .basis,.lc__ctx{font-size:12px;color:var(--muted);margin:0}
.lc__ctx{margin-top:6px}
.lc__sec{margin:0 0 14px}
.lc__sec h4{font:500 10.5px/1.2 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:0 0 6px}
.lc__sec p{margin:0;font-size:13.5px}
.lc__sec ul{margin:0;padding-left:16px;font-size:13.5px}
.lc__sec li{margin:2px 0}
.lc__sec .st{display:block;font-size:12px;color:var(--muted)}
.lc a{color:var(--gold);text-decoration:underline;text-decoration-color:var(--hair);text-underline-offset:2px}
.lc__src{font-size:12px;color:var(--muted)}
.lc__disc{margin:16px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted);font-style:italic}
.lc--up .lc__price .big{color:var(--ink-soft)}
.lc__more{margin:6px 0 0;font-size:13px}
.lc__more a{font-weight:500}
.lc__gap{font-size:12.5px;color:var(--ink-soft);background:var(--sand);padding:8px 10px;margin:6px 0 0}
.lmap__legend{position:absolute;left:14px;bottom:28px;flex-wrap:wrap;z-index:550;display:flex;gap:14px;background:rgba(250,247,240,.92);border:1px solid var(--line);padding:8px 12px;font-size:11.5px;letter-spacing:.08em;color:var(--ink-soft)}
.lmap__legend span{display:flex;align-items:center;gap:6px}
.lk{display:inline-block}
.lk--p{width:11px;height:11px;border-radius:50%;background:var(--brass);box-shadow:0 0 0 1px var(--navy)}
.lk--u{width:10px;height:10px;border-radius:50%;background:var(--paper);border:2.5px solid #2F6F8F;box-shadow:0 0 0 1px var(--navy)}
.lk--i{width:9px;height:9px;transform:rotate(45deg);background:var(--navy);border:1.5px solid var(--gold-2)}
.lmap__hint{font-size:13px;color:var(--muted);margin:14px 0 0}
/* list */
.lmap-list{padding:72px 0 120px;background:var(--paper);border-top:1px solid var(--line)}
.lmap-list .section__head{margin-bottom:36px}
.lmap__tablewrap{overflow-x:auto;border:1px solid var(--line);background:#fff}
.lmap__table{width:100%;border-collapse:collapse;font-size:14px;min-width:820px}
.lmap__table th{white-space:nowrap;font:500 10.5px/1.2 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold);text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--paper)}
.lmap__table td{padding:14px 16px;border-bottom:1px solid var(--sand);vertical-align:top}
.lmap__table td b{font:400 19px/1.2 var(--serif);color:var(--navy);display:block}
.lmap__table td small{color:var(--muted);font-size:12px;display:block;margin-top:2px}
.lmap__tag{display:inline-block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;padding:4px 8px;background:var(--navy);color:var(--cream);white-space:nowrap}
.lmap__tag--up{background:none;color:var(--navy);border:1px dashed var(--brass)}
.lmap__pnr{font-size:12.5px;color:var(--ink-soft);font-style:italic}
.lmap__table tr:hover td{background:#FBF8F1}
.lmap__table a{color:var(--gold)}
.lmap__method{max-width:860px;margin-top:44px}
.lmap__method h3{font:400 26px/1.2 var(--serif);margin:0 0 12px}
.lmap__method ul{padding-left:18px;color:var(--ink-soft);font-size:15px;line-height:1.65}
.lmap__method li{margin:6px 0}
.lmap__checked{font-size:12.5px;color:var(--muted);margin-top:14px}
@media (max-width:900px){
  .lmap-sec{padding:40px 0 28px}
  .lmap__map{height:62vh;min-height:420px}
  .lmap__card{position:relative;top:auto;right:auto;bottom:auto;width:auto;box-shadow:none;border:0;border-top:1px solid var(--line);max-height:none}
  .lmap__legend{bottom:auto;top:12px;left:auto;right:12px}
  .lc__name{font-size:25px}
  .lmap__chip{padding:9px 11px;font-size:10.5px}
}

/* ---- v12 ---- */
.upin--m{border-radius:4px;border-color:var(--navy-2)}
.upin--m::after{border-radius:2px}
.lk--plot{width:14px;height:10px;background:rgba(185,130,47,.38);border:2px solid #8A5A12}
.lmap__top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.lmap__count{margin:0;font-size:14.5px;color:var(--ink-soft)}
.lmap__count b{color:var(--navy)}
.lmap__fbtn{display:none;align-items:center;gap:8px;font:600 12px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:11px 14px;border:1px solid var(--navy);background:var(--paper);color:var(--navy);cursor:pointer}
.lmap__fbadge{background:var(--brass);color:#fff;border-radius:10px;padding:3px 7px;font-size:11px;letter-spacing:0}
.lmap__grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:0;align-items:stretch}
.lmap__grid .lmap{border-right:0}
.lmap__panel{background:var(--paper);border:1px solid var(--line);padding:18px 18px 16px;display:flex;flex-direction:column;gap:4px;max-height:min(76vh,700px);min-height:520px;overflow:auto;font-size:13.5px}
.lmap__phead{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.lmap__ptitle{font:500 21px/1.15 var(--serif);color:var(--navy);margin:0}
.lmap__pclose{display:none;background:none;border:0;font-size:28px;line-height:1;color:var(--navy);cursor:pointer;padding:0 4px}
.lf{border:0;border-top:1px solid var(--line);margin:0;padding:12px 0 10px;display:flex;flex-direction:column;gap:9px}
.lf legend{font:600 11px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);padding:12px 0 4px;float:left;width:100%}
.lf legend+*{clear:both}
.lf__chips{display:flex;flex-wrap:wrap;gap:6px}
.lf__chips .lmap__chip{padding:8px 10px;font-size:10.5px;letter-spacing:.1em}
.lf__lbl{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);flex:1}
.lf__in{font:inherit;font-size:14px;padding:9px 10px;border:1px solid var(--line);background:#fff;color:var(--text);width:100%;border-radius:0;min-height:40px}
.lf__in:focus{outline:2px solid var(--brass);outline-offset:1px;border-color:var(--brass)}
.lf__row{display:flex;gap:8px}
.lf__seg{display:flex;border:1px solid var(--line)}
.lf__seg label{flex:1;cursor:pointer;position:relative}
.lf__seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.lf__seg span{display:block;text-align:center;padding:9px 6px;font-size:12.5px;color:var(--ink-soft)}
.lf__seg input:checked+span{background:var(--navy);color:var(--cream)}
.lf__seg input:focus-visible+span{outline:2px solid var(--brass);outline-offset:-2px}
.lf__sm{font-size:13px}
.lf__range{position:relative;height:30px}
.lf__track{position:absolute;left:8px;right:8px;top:13px;height:4px;background:var(--line)}
.lf__track i{position:absolute;top:0;bottom:0;background:var(--brass)}
.lf__range input{position:absolute;left:0;right:0;top:4px;width:100%;margin:0;background:none;pointer-events:none;-webkit-appearance:none;appearance:none;height:22px}
.lf__range input::-webkit-slider-thumb{pointer-events:auto;-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--paper);border:2px solid var(--navy);cursor:pointer}
.lf__range input::-moz-range-thumb{pointer-events:auto;width:18px;height:18px;border-radius:50%;background:var(--paper);border:2px solid var(--navy);cursor:pointer}
.lf__range input:focus-visible::-webkit-slider-thumb{outline:3px solid var(--brass)}
.lf__pv{margin:0;font-size:13.5px;color:var(--navy);font-weight:600}
.lf__pv small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.lf__foot{margin-top:auto;border-top:1px solid var(--line);padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.lf__count{margin:0;font-size:13px;color:var(--ink-soft)}
.lf__reset{background:none;border:0;color:var(--gold);text-decoration:underline;text-underline-offset:3px;cursor:pointer;font:inherit;font-size:13px;padding:6px 0}
.lf__done{display:none}
.lmap__toggle input:focus-visible,.lmap__chip:focus-visible,.lf__reset:focus-visible,.lmap__fbtn:focus-visible,.lc__act:focus-visible{outline:2px solid var(--brass);outline-offset:2px}
/* legend */
.lmap__legend{position:static;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px 18px;letter-spacing:.02em;font-size:12px;padding:10px 14px;border:0;border-top:1px solid var(--line);background:var(--paper)}
.lmap__lh{margin:0;font:600 10.5px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.lmap__legend .sw{width:22px;height:14px;flex:none}
/* plots */
.plot{cursor:pointer;transition:stroke-width .15s}
path.plot--up{fill:url(#vxU);fill-opacity:1}
path.plot--mp{fill:url(#vxM);fill-opacity:1}
path.plot--up.is-hi{fill:url(#vxUh)}
path.plot--mp.is-hi{fill:url(#vxMh)}
.is-z13 .pin,.is-z13 .upin{transform:scale(.62)}
.is-z13 .pin.is-on,.is-z13 .upin.is-on{transform:scale(.8)}
.is-z13 .ipin{transform:rotate(45deg) scale(.75)}
.plbl{pointer-events:none}
.plbl span{display:inline-block;white-space:nowrap;background:rgba(250,247,240,.94);border:1px solid var(--line);border-left:3px solid #B9822F;padding:3px 7px;font:600 11.5px/1.2 var(--sans);color:var(--navy);box-shadow:0 2px 6px rgba(20,35,60,.15)}
.plbl--upcoming span{border-left-color:#2F6F8F}
.plbl--masterplan span{border-left-color:var(--navy-2)}
/* card extras */
.lc__plotsec p{font-size:13px}
.lc__apx{display:inline-block;background:var(--sand);border:1px dashed var(--ink-soft);padding:1px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);margin-right:4px}
.lc__acts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.lc__act{display:inline-block;padding:9px 12px;border:1px solid var(--navy);color:var(--navy);text-decoration:none;font-size:12.5px;font-weight:600}
.lc__act:hover{background:var(--sand)}
.lc__act--pri{background:var(--navy);color:var(--cream)}
.lc__act--pri:hover{background:var(--navy-2)}
.lc__acts .lc__src{flex-basis:100%;margin:2px 0 0}
.lmap__cta{margin-top:22px;display:flex;align-items:center;justify-content:space-between;gap:16px 28px;flex-wrap:wrap;background:var(--sand);border-left:3px solid var(--brass);padding:18px 22px}
.lmap__cta p{margin:0;max-width:62ch;color:var(--ink-soft)}
.lmap__cta b{color:var(--navy)}
.lmap__map .maplibregl-canvas{outline:none}
.leaflet-container .leaflet-control-attribution{font-size:10.5px;background:rgba(250,247,240,.88)}
@media (max-width:1100px){.lmap__grid{grid-template-columns:minmax(0,1fr) 270px}.lmap__card{width:340px}}
@media (max-width:900px){
  .lmap__fbtn{display:inline-flex}
  .lmap__grid{display:block}
  .lmap__grid .lmap{border-right:1px solid var(--line)}
  .lmap__panel{position:fixed;left:0;right:0;bottom:0;z-index:2000;max-height:86vh;min-height:0;border:0;border-top:3px solid var(--brass);box-shadow:0 -18px 50px rgba(20,35,60,.3);transform:translateY(105%);transition:transform .28s ease;visibility:hidden;padding-bottom:max(16px,env(safe-area-inset-bottom))}
  .lmap__panel.is-open{transform:none;visibility:visible}
  .lmap__pclose,.lf__done{display:inline-block}
  .lmap__legend{position:static;max-width:none;flex-direction:row;flex-wrap:wrap;gap:8px 14px;border:0;border-top:1px solid var(--line);background:var(--paper)}
  .lmap__lh{flex-basis:100%}
  .lmap__count{font-size:13.5px}
  .lf__foot{position:sticky;bottom:calc(-1 * max(16px,env(safe-area-inset-bottom)));background:var(--paper);padding-bottom:12px;z-index:2}
  .pin,.upin{transform:scale(.78)}
  .ipin{transform:rotate(45deg) scale(.85)}
}
html.lmap-sheet-open body{overflow:hidden}
@media (prefers-reduced-motion:reduce){.lmap__panel{transition:none}}
/* ---- v12 vivid category palette + click-to-shade selection ---- */
.lmap{--c-launch:#2E9E5B;--c-launch-e:#1E7A43;--c-up:#2F7FD1;--c-up-e:#1F5FA8;--c-mp:#7B4FC9;--c-mp-e:#5A35A0;--c-air:#E07B24;--c-rail:#D1453B;--c-rail-e:#A8302A}
.lmap-sec{--c-launch:#2E9E5B;--c-launch-e:#1E7A43;--c-up:#2F7FD1;--c-up-e:#1F5FA8;--c-mp:#7B4FC9;--c-mp-e:#5A35A0;--c-air:#E07B24;--c-rail:#D1453B;--c-rail-e:#A8302A}
.pin{background:var(--c-launch);border-color:#fff;box-shadow:0 0 0 1px var(--c-launch-e),0 4px 10px rgba(20,35,60,.35)}
.pin.is-on,.pin:hover{background:var(--c-launch-e);box-shadow:0 0 0 3px rgba(46,158,91,.35),0 6px 16px rgba(20,35,60,.4)}
.upin{background:#fff;border-color:var(--c-up);box-shadow:0 0 0 1px var(--c-up-e),0 3px 8px rgba(20,35,60,.25)}
.upin::after{border-color:var(--c-up)}
.upin.is-on,.upin:hover{border-color:var(--c-up-e);background:#DCEBFA;box-shadow:0 0 0 3px rgba(47,127,209,.35),0 3px 8px rgba(20,35,60,.25)}
.upin--m{border-color:var(--c-mp);box-shadow:0 0 0 1px var(--c-mp-e),0 3px 8px rgba(20,35,60,.25)}
.upin--m::after{border-color:var(--c-mp)}
.upin--m.is-on,.upin--m:hover{border-color:var(--c-mp-e);background:#E9E0F8;box-shadow:0 0 0 3px rgba(123,79,201,.35),0 3px 8px rgba(20,35,60,.25)}
.ipin{background:var(--c-rail);border:2px solid #fff;box-shadow:0 0 0 1px var(--c-rail-e),0 3px 8px rgba(20,35,60,.3)}
.ipin.is-on,.ipin:hover{background:var(--c-rail-e);border-color:#fff}
.lk--p{background:var(--c-launch);box-shadow:0 0 0 1px var(--c-launch-e)}
.lk--u{border-color:var(--c-up);box-shadow:0 0 0 1px var(--c-up-e);position:relative}
.lk--i{background:var(--c-rail);border-color:#fff;box-shadow:0 0 0 1px var(--c-rail-e)}
.lk--plot{width:14px;height:10px;background:linear-gradient(90deg,rgba(46,158,91,.45) 0 33%,rgba(47,127,209,.45) 33% 66%,rgba(123,79,201,.45) 66%);border:2px solid var(--c-launch-e)}
.plbl span{border-left-color:var(--c-launch)}
.plbl--upcoming span{border-left-color:var(--c-up)}
.plbl--masterplan span{border-left-color:var(--c-mp)}
.lmap__card[data-cat=launch]::before{background:var(--c-launch);height:4px}
.lmap__card[data-cat=upcoming]::before{background:var(--c-up);height:4px}
.lmap__card[data-cat=masterplan]::before{background:var(--c-mp);height:4px}
.lmap__card[data-cat=infra]::before{background:var(--c-rail);height:4px}
.lmap__card[data-cat=airport]::before{background:var(--c-air);height:4px}
path.plot{transition:opacity .2s,stroke-width .15s}
path.plot.is-dim{opacity:.28}
path.plot-buf{pointer-events:none}
.leaflet-tooltip.lmap__apxlbl{background:rgba(255,255,255,.94);color:var(--navy);border:1px dashed var(--navy);border-radius:0;box-shadow:none;font:700 10.5px/1.2 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:3px 7px}
.leaflet-tooltip.lmap__apxlbl::before{display:none}
.lmap__peek{display:none}
@media (max-width:900px){
  .lmap__map{scroll-margin-top:72px}
  .lmap__peek{display:block;position:absolute;left:50%;transform:translateX(-50%);top:calc(max(62vh,420px) - 82px);z-index:560;border:0;background:var(--navy);color:#fff;font:600 13px/1 var(--sans);letter-spacing:.04em;padding:11px 16px;min-height:40px;box-shadow:0 6px 18px rgba(20,35,60,.3);cursor:pointer}
  .lmap__peek[hidden]{display:none}
}
.lmap__lnote{font-style:italic;color:var(--muted)}
