:root{
  --hhf-map-green:#335844;
  --hhf-map-green-dark:#203d2e;
  --hhf-map-border:#ddd7cb;
  --hhf-map-soft:#f8f5ee;
  --hhf-map-shadow:0 14px 38px rgba(27,44,32,.13);
}
.hhf-map-page{background:#fff}
.hhf-map-intro{padding:54px 0 20px;background:#fff}
.hhf-map-heading-row{display:flex;justify-content:space-between;align-items:flex-end;gap:30px}
.hhf-map-heading-row h1{font-family:Georgia,serif;font-size:clamp(2.35rem,4vw,3.65rem);font-weight:400;line-height:1.08;margin:.08em 0 .22em;color:var(--ink)}
.hhf-map-heading-row p{max-width:760px;margin:0;color:var(--muted);font-size:1rem}
.hhf-map-list-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 19px;border:1px solid var(--green);border-radius:999px;color:var(--green);font-weight:700;white-space:nowrap;background:#fff}
.hhf-map-list-link:hover{background:#f3f6f3}
.hhf-map-toolbar{margin-top:28px;display:flex;align-items:stretch;gap:0;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(27,44,32,.07);overflow:hidden;max-width:1180px}
.hhf-map-filter{min-width:190px;display:flex;flex-direction:column;justify-content:center;padding:10px 16px;position:relative}
.hhf-map-filter+.hhf-map-filter:before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:1px;background:#e7e1d7}
.hhf-map-filter span{font-size:.74rem;font-weight:700;color:var(--ink);margin-bottom:1px}
.hhf-map-filter select{width:100%;border:0;outline:0;background:transparent;color:var(--muted);font:inherit;padding:0;cursor:pointer}
.hhf-map-check{display:flex;align-items:center;gap:9px;padding:0 18px;border-left:1px solid #e7e1d7;font-weight:700;white-space:nowrap;cursor:pointer}
.hhf-map-check input{width:17px;height:17px;accent-color:var(--green)}
.hhf-map-clear{border:0;border-left:1px solid #e7e1d7;background:var(--soft);padding:0 17px;color:var(--green);font:inherit;font-weight:700;cursor:pointer;white-space:nowrap}
.hhf-map-price-filter{min-width:360px;padding:9px 16px 10px;border-left:1px solid #e7e1d7;display:flex;flex-direction:column;justify-content:center;gap:5px}
.hhf-map-price-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:.74rem;color:var(--ink)}
.hhf-map-price-head>span{font-weight:800}.hhf-map-price-head small{font-weight:500;color:var(--muted)}
.hhf-map-price-head strong{color:var(--green);font-size:.76rem;white-space:nowrap;min-width:110px;text-align:right}
.hhf-map-price-sliders{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.hhf-map-price-sliders label{display:grid;grid-template-columns:84px minmax(0,1fr);align-items:center;gap:8px;font-size:.68rem;color:var(--muted);white-space:nowrap;min-width:0}
.hhf-map-price-sliders label>span{display:block;width:84px}
.hhf-map-price-sliders input[type=range]{width:100%;min-width:0;accent-color:var(--green);cursor:pointer}

.hhf-map-section{padding:0 0 52px;background:#fff}
.hhf-map-frame{position:relative;height:670px;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#dcefe4;box-shadow:var(--hhf-map-shadow)}
.hhf-property-map{position:absolute;inset:0;background:#dcefe4}
.hhf-property-map.leaflet-container{font-family:Arial,Helvetica,sans-serif}
.hhf-map-results-pill{position:absolute;z-index:650;top:14px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.96);border:1px solid #d5ded8;border-radius:999px;box-shadow:0 4px 18px rgba(25,52,42,.15);padding:8px 14px;font-size:13px;font-weight:800;color:#2b5642;pointer-events:none;white-space:nowrap}
.hhf-map-recentre{position:absolute;z-index:650;right:14px;bottom:28px;width:46px;height:46px;border:1px solid #c9d7cf;border-radius:50%;background:#fff;box-shadow:0 4px 18px rgba(25,52,42,.17);font-size:22px;color:var(--green);cursor:pointer}
.hhf-map-location-note{position:absolute;z-index:650;left:14px;bottom:14px;display:flex;align-items:flex-start;gap:8px;max-width:470px;padding:8px 11px;background:rgba(255,255,255,.94);border:1px solid #d5ded8;border-radius:10px;box-shadow:0 3px 14px rgba(25,52,42,.12);font-size:11px;line-height:1.35;color:#496257;pointer-events:none}
.hhf-map-location-note>span{flex:0 0 17px;width:17px;height:17px;border:1px solid #8da397;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:11px;font-weight:700;color:var(--green);margin-top:-1px}
.hhf-price-marker-wrap{background:transparent;border:0}
.hhf-price-marker{display:inline-flex;align-items:center;justify-content:center;min-width:70px;min-height:42px;padding:7px 11px;background:#fff;border:2px solid #145a70;border-radius:13px;box-shadow:0 3px 10px rgba(18,67,83,.16);color:#075065;font-weight:900;font-size:10.5px;line-height:1.05;white-space:nowrap;transition:transform .12s ease,background .12s ease,color .12s ease,box-shadow .12s ease}
.hhf-price-marker.hhf-price-marker-no-price{font-size:12px;min-width:58px}
.leaflet-marker-icon:hover .hhf-price-marker,.leaflet-marker-icon.hhf-price-marker-active .hhf-price-marker{transform:translateY(-2px) scale(1.04);background:#145a70;color:#fff;box-shadow:0 7px 18px rgba(18,67,83,.27)}
.hhf-map-popup .leaflet-popup-content-wrapper{border-radius:18px;overflow:hidden;padding:0;box-shadow:0 12px 34px rgba(15,43,32,.24)}
.hhf-map-popup .leaflet-popup-content{margin:0;width:280px!important}
.hhf-map-popup .leaflet-popup-tip{box-shadow:2px 2px 6px rgba(15,43,32,.10)}

.hhf-price-marker.hhf-price-marker-multi{background:#145a70;color:#fff;border-color:#145a70;font-size:12px;letter-spacing:.01em;flex-direction:column;gap:2px;min-height:48px;padding:6px 10px}.hhf-marker-home-count{font-size:13px;font-weight:900}.hhf-marker-multi-prices{font-size:10.5px;font-weight:800;opacity:.96}
.hhf-map-popup-multi .leaflet-popup-content-wrapper{overflow:visible;background:transparent;box-shadow:none}
.hhf-map-popup-multi .leaflet-popup-content{width:580px!important;max-height:620px;overflow:auto;background:transparent}
.hhf-map-popup-multi .leaflet-popup-tip{background:#fff}
.hhf-map-card-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:transparent;filter:drop-shadow(0 12px 22px rgba(15,43,32,.18))}
.hhf-map-card-group .hhf-map-card{border:1px solid #dfe6e1}
.hhf-map-card-group .hhf-map-card{min-width:0}
.hhf-map-card-group .hhf-map-card-image{height:132px}
.hhf-map-card-group .hhf-map-card-body{padding:11px 12px 13px}
.hhf-map-card-group .hhf-map-card-title{font-size:17px}
.hhf-map-card-group .hhf-map-card-facts{min-height:30px}
.hhf-map-card{display:block;color:#17382b;text-decoration:none;background:#fff}
.hhf-map-card-image{height:154px;background:#e6ece8 center/cover no-repeat;position:relative}
.hhf-map-card-image:after{content:"";position:absolute;inset:auto 0 0;height:46%;background:linear-gradient(transparent,rgba(0,0,0,.28))}
.hhf-map-card-body{padding:13px 14px 14px}
.hhf-map-card-location{font-size:12px;color:#61766c;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hhf-map-card-title{font-family:Georgia,serif;font-size:19px;line-height:1.18;font-weight:500;margin:0 0 7px;color:#173b2c}
.hhf-map-card-facts{font-size:12px;color:#526c60;margin-bottom:8px}
.hhf-map-card-price{font-size:13px;color:#345649}.hhf-map-card-price strong{font-size:18px;color:#0e4e39}
.hhf-map-card-cta{display:inline-block;margin-top:10px;font-size:13px;font-weight:800;color:var(--green);text-decoration:underline;text-underline-offset:2px}
.leaflet-control-zoom{border:0!important;box-shadow:0 4px 18px rgba(25,52,42,.17)!important}
.leaflet-control-zoom a{color:var(--green)!important}
.leaflet-control-attribution{font-size:9px}
.hhf-map-trust{margin-top:0}
@media(max-width:1000px){
  .hhf-map-toolbar{flex-wrap:wrap;overflow:visible}
  .hhf-map-price-filter{order:5;flex:1 1 100%;border-left:0;border-top:1px solid #e7e1d7}
}
@media(max-width:850px){
  .hhf-map-intro{padding:38px 0 16px}
  .hhf-map-heading-row{align-items:flex-start;flex-direction:column;gap:18px}
  .hhf-map-toolbar{max-width:none;display:grid;grid-template-columns:1fr 1fr;border-radius:14px;overflow:hidden}
  .hhf-map-filter{min-width:0}
  .hhf-map-check{min-height:52px;border-left:0;border-top:1px solid #e7e1d7}
  .hhf-map-price-filter{grid-column:1/-1;min-width:0;border-top:1px solid #e7e1d7;padding:10px 12px}
  .hhf-map-clear{min-height:52px;border-left:1px solid #e7e1d7;border-top:1px solid #e7e1d7}
  .hhf-map-frame{height:620px}
}
@media(max-width:560px){
  .hhf-map-intro{padding-top:28px}
  .hhf-map-heading-row h1{font-size:2.4rem}
  .hhf-map-list-link{min-height:42px}
  .hhf-map-toolbar{grid-template-columns:1fr 1fr}
  .hhf-map-filter{padding:9px 11px}
  .hhf-map-check,.hhf-map-clear{padding:0 11px;font-size:.88rem}
  .hhf-map-price-sliders{grid-template-columns:1fr;gap:7px}
  .hhf-map-price-head{align-items:flex-start;flex-direction:column;gap:2px}
  .hhf-map-section{padding-bottom:36px}
  .hhf-map-frame{height:540px;border-radius:14px}
  .hhf-price-marker{min-width:62px;min-height:36px;padding:6px 8px;font-size:10.5px;border-radius:11px}
  .hhf-map-results-pill{top:9px;font-size:12px;padding:7px 10px;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis}
  .hhf-map-location-note{left:9px;right:62px;bottom:9px;max-width:none;padding:7px 9px;font-size:10px}
  .hhf-map-location-note>span{flex-basis:16px;width:16px;height:16px;font-size:10px}
  .hhf-map-popup .leaflet-popup-content{width:244px!important}.hhf-map-card-image{height:128px}
}

/* Map-search travel markers -------------------------------------------------
   Airports and ferry ports reuse HHF's normal transport-overlay popups/data,
   but are intentionally understated here so price/property markers dominate. */
.hhf-map-page .hhf-transport-marker-wrap {
  width: 22px !important;
  height: 22px !important;
  margin-left: -11px !important;
  margin-top: -11px !important;
  z-index: 250 !important;
}
.hhf-map-page .hhf-transport-marker-wrap > span {
  width: 20px !important;
  height: 20px !important;
  border-width: 1.5px !important;
  box-shadow: 0 1px 4px rgba(22,43,33,.20) !important;
}
.hhf-map-page .hhf-transport-marker-wrap svg {
  width: 11px !important;
  height: 11px !important;
}
.hhf-map-page .hhf-price-marker-wrap {
  z-index: 450 !important;
}
.hhf-map-page .hhf-transport-marker-wrap:hover,
.hhf-map-page .hhf-transport-marker-wrap:focus-within {
  z-index: 550 !important;
}



@media(max-width:700px){
  .hhf-map-popup-multi .leaflet-popup-content{width:280px!important;max-height:520px}
  .hhf-map-card-group{grid-template-columns:1fr}
  .hhf-map-card-group .hhf-map-card-image{height:128px}
}

/* Smart low-zoom clustering: keeps the France-wide view readable.
   Click a cluster to zoom in; normal price pins return as the map opens up. */
.hhf-map-cluster-wrap{background:transparent!important;border:0!important}
.hhf-map-cluster{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:78px;min-height:38px;padding:6px 10px;background:#1f654e;color:#fff;border:2px solid #fff;border-radius:999px;box-shadow:0 4px 14px rgba(18,67,52,.24);white-space:nowrap;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.hhf-map-cluster strong{font-size:12px;line-height:1.05;font-weight:900}
.hhf-map-cluster span{font-size:9.5px;line-height:1.05;font-weight:800;opacity:.96}
.leaflet-marker-icon:hover .hhf-map-cluster{transform:translateY(-2px) scale(1.04);box-shadow:0 7px 18px rgba(18,67,52,.30)}


/* v17: keep slider tracks physically stationary while their numeric labels change. */
@media (max-width: 720px){
  .hhf-map-price-sliders label{grid-template-columns:84px minmax(0,1fr)}
  .hhf-map-price-head strong{min-width:0;text-align:left}
}


/* v18: multi-property popup has no painted "empty card" for odd totals. */
.hhf-map-card-group .hhf-map-card:first-child{border-top-left-radius:18px}
.hhf-map-card-group .hhf-map-card:nth-child(2){border-top-right-radius:18px}
.hhf-map-card-group .hhf-map-card:nth-last-child(1):nth-child(odd){border-bottom-left-radius:18px;border-bottom-right-radius:18px}
.hhf-map-card-group .hhf-map-card:nth-last-child(1):nth-child(even){border-bottom-right-radius:18px}
.hhf-map-card-group .hhf-map-card:nth-last-child(2):nth-child(odd){border-bottom-left-radius:18px}

@media (max-width:720px){
  .hhf-map-card-group .hhf-map-card{border-radius:0}
  .hhf-map-card-group .hhf-map-card:first-child{border-radius:18px 18px 0 0}
  .hhf-map-card-group .hhf-map-card:last-child{border-radius:0 0 18px 18px}
  .hhf-map-card-group .hhf-map-card:only-child{border-radius:18px}
}
