/* FEF Maps — overlay panel + Elementor templates (Phase 7). Every look is a CSS variable / Elementor Style control. */

/* ─────────── Elementor templates ─────────── */
.fef-map-wrap .fef-map-list-item--tpl{display:block}
.fef-map-wrap .fef-map-list-tplbody{min-width:0}
.fef-map-wrap .fef-map-list-item--tpl .fef-map-list-num{position:absolute;top:8px;left:8px;z-index:2}
.fef-map-wrap .fef-map-list-content--tpl{padding:4px 0 0}
.fef-map-wrap .fef-map-list-top-tpl{border-bottom:1px solid var(--fef-line,rgba(17,24,39,.1))}
.fef-map-wrap .fef-map-search-tpl{position:absolute;top:10px;left:calc(10px + var(--fef-ctl-size,38px) + 10px);z-index:1001;max-width:calc(100% - var(--fef-ctl-size,38px) * 2 - 56px)}
.fef-map-wrap.fef-map--no-zoom .fef-map-search-tpl{left:10px}
.fef-map-wrap .fef-map-iw--tpl{min-width:min(var(--fef-iw-w,280px),var(--fef-iw-cap,100%))}
.fef-map-wrap .fef-map-tpl-body{min-width:0}
.fef-map-wrap .fef-map-tpl-body.is-loading{padding:18px 16px;color:var(--fef-muted,#64748b);font-size:13px}
.fef-map-wrap .fef-map-iw-body--foot{padding-top:0}

/* ─────────── The panel ─────────── */
.fef-map-wrap .fef-pnl{--fef-pnl-pad:18px;display:flex;flex-direction:column;box-sizing:border-box;background:var(--fef-pnl-bg,#fff);color:var(--fef-pnl-color,#111827);font:400 14px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;overflow:hidden;min-height:0;opacity:0;transition:opacity var(--fef-pnl-ms,.25s) ease,transform var(--fef-pnl-ms,.25s) ease}
.fef-map-wrap .fef-pnl[hidden],.fef-map-wrap .fef-pnl-bd[hidden]{display:none!important}
.fef-map-wrap .fef-pnl.is-open{opacity:1;transform:none!important}
.fef-map-wrap .fef-pnl *,.fef-map-wrap .fef-pnl *::before,.fef-map-wrap .fef-pnl *::after{box-sizing:border-box}
.fef-map-wrap .fef-pnl a{color:var(--fef-pnl-link,#1d4ed8)}
.fef-map-wrap .fef-pnl-head{flex:none;display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--fef-line,rgba(17,24,39,.1));background:inherit}
.fef-map-wrap .fef-pnl-title{flex:1 1 auto;min-width:0;font-size:16px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis}
.fef-map-wrap .fef-pnl-title:empty{display:none}
.fef-map-wrap .fef-pnl-close{flex:none;margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:rgba(15,23,42,.07);color:#0f172a;font:400 24px/1 system-ui,sans-serif;cursor:pointer;transition:background .15s,color .15s}
.fef-map-wrap .fef-pnl-close:hover,.fef-map-wrap .fef-pnl-close:focus-visible{background:#0f172a;color:#fff}
.fef-map-wrap .fef-pnl-body{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--fef-pnl-pad)}
.fef-map-wrap .fef-pnl-load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--fef-pnl-bg,#fff) 70%,transparent);z-index:2;pointer-events:none}
.fef-map-wrap .fef-pnl-load[hidden]{display:none}
.fef-map-wrap .fef-pnl-spin{width:30px;height:30px;border:3px solid rgba(15,23,42,.15);border-top-color:#0f172a;border-radius:50%;animation:fefPnlSpin .8s linear infinite}
@keyframes fefPnlSpin{to{transform:rotate(360deg)}}
.fef-map-wrap .fef-pnl-err{margin:0;padding:12px 14px;border-radius:8px;background:#fef2f2;color:#991b1b}

/* modes */
.fef-map-wrap .fef-pnl--m-overlay{position:absolute;inset:0;z-index:1200;border-radius:inherit}
.fef-map-wrap .fef-pnl--m-overlay.fef-pnl--h-fixed{bottom:auto;height:var(--fef-pnl-h,480px);max-height:100%}
.fef-map-wrap .fef-pnl--m-side{--fef-pnl-sw:min(var(--fef-pnl-w,420px),70%);position:absolute;top:0;bottom:0;right:0;width:var(--fef-pnl-sw);z-index:1200}
.fef-map-wrap .fef-pnl--m-side.fef-pnl--s-left{right:auto;left:0}
.fef-map-wrap .fef-pnl--m-side.fef-pnl--h-fixed{bottom:auto;height:var(--fef-pnl-h,480px);max-height:100%}
.fef-map-wrap .fef-pnl--m-below{position:relative;flex:none;width:100%;z-index:1}
.fef-map-wrap .fef-pnl--m-below.fef-pnl--h-fixed{height:var(--fef-pnl-h,480px)}
.fef-map-wrap .fef-pnl--m-below.fef-pnl--h-full{height:100vh;height:100dvh}
.fef-map-wrap .fef-pnl--m-below.fef-pnl--h-auto .fef-pnl-body{overflow:visible}
.fef-map-wrap .fef-pnl--m-drawer{position:fixed;z-index:100001;box-shadow:0 0 40px rgba(15,23,42,.3)}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-right,.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-left{top:0;bottom:0;width:min(var(--fef-pnl-w,420px),100vw)}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-right{right:0}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-left{left:0}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-right.fef-pnl--h-fixed,.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-left.fef-pnl--h-fixed{bottom:auto;height:var(--fef-pnl-h,480px);max-height:100vh}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-top,.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-bottom{left:0;right:0;width:auto;max-height:90vh}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-top{top:0}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-bottom{bottom:0}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-top.fef-pnl--h-fixed,.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-bottom.fef-pnl--h-fixed{height:var(--fef-pnl-h,480px)}
.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-top.fef-pnl--h-full,.fef-map-wrap .fef-pnl--m-drawer.fef-pnl--s-bottom.fef-pnl--h-full{height:100vh;max-height:100vh}
.fef-map-wrap .fef-pnl-bd{position:fixed;inset:0;z-index:100000;background:var(--fef-pnl-bd,rgba(15,23,42,.45));opacity:0;transition:opacity var(--fef-pnl-ms,.25s) ease}
.fef-map-wrap .fef-pnl-bd.is-open{opacity:1}
html.fef-pnl-lock{overflow:hidden}

/* the map makes room (push): the stage keeps the map's height; the panel is laid over the strip the map gave up */
.fef-map-stage.has-pnl-side{padding-right:min(var(--fef-pnl-w,420px),70%)}
.fef-map-stage.has-pnl-side.has-pnl-side-left{padding-right:0;padding-left:min(var(--fef-pnl-w,420px),70%)}

.fef-map-wrap .fef-map-stage.has-pnl-side .fef-map-search-box,.fef-map-wrap .fef-map-stage.has-pnl-side .fef-map-search-tpl{max-width:calc(100% - min(var(--fef-pnl-w,420px),70%) - 70px)}
.fef-map-wrap .fef-map-stage.has-pnl-side .fef-map-fsbar,.fef-map-wrap .fef-map-stage.has-pnl-side .leaflet-top.leaflet-right{margin-right:0}

/* animation (from the side the panel belongs to) */
.fef-map-wrap .fef-pnl--a-slide:not(.is-open){transform:translateY(14px)}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-drawer.fef-pnl--s-right:not(.is-open){transform:translateX(100%)}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-drawer.fef-pnl--s-left:not(.is-open){transform:translateX(-100%)}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-drawer.fef-pnl--s-top:not(.is-open){transform:translateY(-100%)}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-drawer.fef-pnl--s-bottom:not(.is-open){transform:translateY(100%)}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-side.fef-pnl--s-right:not(.is-open){transform:translateX(24px)}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-side.fef-pnl--s-left:not(.is-open){transform:translateX(-24px)}
.fef-map-wrap .fef-pnl--m-drawer.is-open{opacity:1}
.fef-map-wrap .fef-pnl--a-slide.fef-pnl--m-drawer:not(.is-open){opacity:1}
.fef-map-wrap .fef-pnl--a-none{--fef-pnl-ms:0s;opacity:1}
@media (prefers-reduced-motion:reduce){.fef-pnl,.fef-pnl-bd{transition:none}}

/* ─────────── details ─────────── */
.fef-map-wrap .fef-pnl-detail{display:flex;flex-flow:row wrap;gap:20px;align-items:flex-start}
.fef-map-wrap .fef-pnl-gal{flex:1 1 240px;min-width:0;max-width:100%}
.fef-map-wrap .fef-pnl-info{flex:1 1 260px;min-width:0}
.fef-map-wrap .fef-pnl-gal-main{overflow:hidden;border-radius:12px;background:#f1f5f9;aspect-ratio:4/3}
.fef-map-wrap .fef-pnl-gal-img{display:block;width:100%;height:100%;object-fit:cover}
.fef-map-wrap .fef-pnl-gal-thumbs{display:flex;gap:8px;margin-top:8px;overflow-x:auto;padding-bottom:2px}
.fef-map-wrap .fef-pnl-gal-thumb{flex:none;width:58px;height:58px;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#f1f5f9;cursor:pointer;opacity:.75}
.fef-map-wrap .fef-pnl-gal-thumb.is-on,.fef-map-wrap .fef-pnl-gal-thumb:hover{border-color:#0f172a;opacity:1}
.fef-map-wrap .fef-pnl-gal-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.fef-map-wrap .fef-pnl-name{margin:0 0 6px;font-size:20px;line-height:1.25;font-weight:700;color:inherit}
.fef-map-wrap .fef-pnl-price{margin:0 0 6px;font-size:18px;font-weight:700}
.fef-map-wrap .fef-pnl-price del{opacity:.55;font-weight:400;margin-right:6px}
.fef-map-wrap .fef-pnl-price ins{text-decoration:none}
.fef-map-wrap .fef-pnl-rate{margin:0 0 8px;display:flex;align-items:center;gap:6px;font-size:13px}
.fef-map-wrap .fef-pnl-line{margin:0 0 4px;font-size:14px}
.fef-map-wrap .fef-pnl-addr{opacity:.85}
.fef-map-wrap .fef-pnl-hours{margin:8px 0;padding:8px 10px;border-radius:8px;background:#f8fafc;font-size:13px}
.fef-map-wrap .fef-pnl-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.fef-map-wrap .fef-pnl-chip{padding:2px 10px;border-radius:999px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:600}
.fef-map-wrap .fef-pnl-text,.fef-map-wrap .fef-pnl-short,.fef-map-wrap .fef-pnl-rich{margin:10px 0}
.fef-map-wrap .fef-pnl-text p,.fef-map-wrap .fef-pnl-short p,.fef-map-wrap .fef-pnl-rich p{margin:0 0 .7em}
.fef-map-wrap .fef-pnl-rich img{max-width:100%;height:auto;border-radius:8px}
.fef-map-wrap .fef-pnl-facts{margin:12px 0;display:grid;gap:6px}
.fef-map-wrap .fef-pnl-facts>div{display:flex;gap:10px;padding:6px 0;border-bottom:1px dashed var(--fef-line,rgba(17,24,39,.12));font-size:13px}
.fef-map-wrap .fef-pnl-facts dt{flex:0 0 38%;font-weight:600;margin:0}
.fef-map-wrap .fef-pnl-facts dd{flex:1 1 auto;margin:0;min-width:0;overflow-wrap:anywhere}
.fef-map-wrap .fef-pnl-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.fef-map-wrap .fef-pnl-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 16px;border:1px solid var(--fef-line,rgba(17,24,39,.18));border-radius:10px;background:#fff;color:#111827!important;font:600 14px/1 system-ui,sans-serif;text-decoration:none!important;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.fef-map-wrap .fef-pnl-btn:hover,.fef-map-wrap .fef-pnl-btn:focus-visible{background:#f1f5f9}
.fef-map-wrap .fef-pnl-btn--main{background:var(--fef-pnl-btn-bg,#111827);border-color:var(--fef-pnl-btn-bg,#111827);color:var(--fef-pnl-btn-color,#fff)!important}
.fef-map-wrap .fef-pnl-btn--main:hover,.fef-map-wrap .fef-pnl-btn--main:focus-visible{filter:brightness(1.18);background:var(--fef-pnl-btn-bg,#111827)}
.fef-map-wrap .fef-pnl-detail--product .fef-pnl-btn.added_to_cart{display:none}

/* ─────────── related items ─────────── */
.fef-map-wrap .fef-pnl-rel{margin-top:22px}
.fef-map-wrap .fef-pnl-details:empty+.fef-pnl-rel{margin-top:0}
.fef-map-wrap .fef-pnl-rel-title{margin:0 0 12px;font-size:16px;font-weight:700;color:inherit}
.fef-map-wrap .fef-pnl-rel-title[hidden]{display:none}
.fef-map-wrap .fef-pnl-grid{display:grid;grid-template-columns:repeat(var(--fef-pnl-cols,2),minmax(0,1fr));gap:14px}
.fef-map-wrap .fef-pnl-card{display:flex;flex-direction:column;min-width:0;margin:0;overflow:hidden;border:1px solid var(--fef-line,rgba(17,24,39,.1));border-radius:12px;background:#fff}
.fef-map-wrap .fef-pnl-card--tpl{display:block;border:0;background:transparent;overflow:visible}
.fef-map-wrap .fef-pnl-card-media{display:block;position:relative;overflow:hidden;aspect-ratio:4/3;background:#f1f5f9}
.fef-map-wrap .fef-pnl-card-img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.fef-map-wrap .fef-pnl-card:hover .fef-pnl-card-img{transform:scale(1.04)}
.fef-map-wrap .fef-pnl-card-body{display:flex;flex-direction:column;gap:4px;padding:10px 12px 12px;min-width:0}
.fef-map-wrap .fef-pnl-card-title{margin:0;font-size:14px;font-weight:600;line-height:1.35}
.fef-map-wrap .fef-pnl-card-title a{color:inherit;text-decoration:none}
.fef-map-wrap .fef-pnl-card-title a:hover{text-decoration:underline}
.fef-map-wrap .fef-pnl-card-price{font-weight:700;font-size:14px}
.fef-map-wrap .fef-pnl-card-price del{opacity:.55;font-weight:400}
.fef-map-wrap .fef-pnl-card-price ins{text-decoration:none}
.fef-map-wrap .fef-pnl-card-text,.fef-map-wrap .fef-pnl-card-terms{font-size:12.5px;opacity:.8}
.fef-map-wrap .fef-pnl-card-btn{margin-top:6px;min-height:34px;font-size:13px}
.fef-map-wrap .fef-pnl-card--media{border:0;background:transparent}
.fef-map-wrap .fef-pnl-card--media figcaption{padding:6px 2px 0}
.fef-map-wrap .fef-pnl-empty{padding:18px;text-align:center;border:1px dashed var(--fef-line,rgba(17,24,39,.2));border-radius:12px;opacity:.75}
.fef-map-wrap .fef-pnl-empty[hidden]{display:none}
.fef-map-wrap .fef-pnl-pager{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:16px}
.fef-map-wrap .fef-pnl-pager[hidden]{display:none}
.fef-map-wrap .fef-pnl-pager button,.fef-map-wrap .fef-pnl-more{min-width:36px;height:36px;padding:0 12px;border:1px solid var(--fef-line,rgba(17,24,39,.18));border-radius:8px;background:#fff;color:#111827;font:600 13px/1 system-ui,sans-serif;cursor:pointer}
.fef-map-wrap .fef-pnl-pager button:hover,.fef-map-wrap .fef-pnl-more:hover{background:#f1f5f9}
.fef-map-wrap .fef-pnl-pager button.is-current{background:#111827;border-color:#111827;color:#fff}
.fef-map-wrap .fef-pnl-gap{align-self:center;padding:0 4px;opacity:.6}
.fef-map-wrap .fef-pnl-sentinel{height:1px}

/* ─────────── lightbox ─────────── */
.fef-map-wrap .fef-pnl-lb{position:fixed;inset:0;z-index:2147483001;display:flex;align-items:center;justify-content:center;background:rgba(2,6,23,.88);padding:24px}
.fef-map-wrap .fef-pnl-lb figure{margin:0;max-width:min(1100px,100%);max-height:100%;display:flex;flex-direction:column;align-items:center;gap:10px}
.fef-map-wrap .fef-pnl-lb img{max-width:100%;max-height:calc(100vh - 110px);object-fit:contain;border-radius:8px}
.fef-map-wrap .fef-pnl-lb figcaption{color:#e2e8f0;font:400 14px/1.4 system-ui,sans-serif;text-align:center}
.fef-map-wrap .fef-pnl-lb button{position:absolute;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font:400 28px/1 system-ui,sans-serif;cursor:pointer}
.fef-map-wrap .fef-pnl-lb button:hover{background:rgba(255,255,255,.3)}
.fef-map-wrap .fef-pnl-lb-x{top:14px;right:14px}
.fef-map-wrap .fef-pnl-lb-p{left:14px;top:50%;transform:translateY(-50%)}
.fef-map-wrap .fef-pnl-lb-n{right:14px;top:50%;transform:translateY(-50%)}

/* small screens: a push panel becomes a full-width one above the map's controls; the details stack */
@media (max-width:600px){
  .fef-map-stage.has-pnl-side,.fef-map-stage.has-pnl-side.has-pnl-side-left{padding:0}
  .fef-map-wrap .fef-pnl--m-side{position:relative;width:100%;top:auto;bottom:auto;left:auto;right:auto}
  .fef-map-wrap .fef-pnl--m-side.fef-pnl--h-fixed{height:var(--fef-pnl-h,480px)}
  .fef-map-wrap .fef-pnl-gal,.fef-map-wrap .fef-pnl-info{flex-basis:100%}
}

/* hover card flipped below its marker */
.fef-map-wrap .fef-map-popup--below .leaflet-popup-tip-container{display:none}
