/* ===== FUENTE GALANO ===== */
@font-face{font-family:"Galano BK";font-style:normal;font-weight:400 500;font-display:swap;
  src:url("https://bkrealtygroup.es/wp-content/uploads/2025/09/Galano-Grotesque-Medium.woff2") format("woff2"),
      url("https://bkrealtygroup.es/wp-content/uploads/2025/09/Galano-Grotesque-Medium.woff") format("woff");}
@font-face{font-family:"Galano BK";font-style:normal;font-weight:600 900;font-display:swap;
  src:url("https://bkrealtygroup.es/wp-content/uploads/2025/09/Galano-Grotesque-Bold.woff2") format("woff2"),
      url("https://bkrealtygroup.es/wp-content/uploads/2025/09/Galano-Grotesque-Bold.woff") format("woff");}
:root{--bk:#0b2e52;--bk2:#378ADD;}
/* TAMANO DE LETRA. Una sola variable: toda la tipografia del mapa
   se calcula a partir de ella. Para cambiar la escala, solo esta linea. */
#bkmapa{--fs:clamp(1rem,1vw,1.4rem);--ff:"Galano BK","Galano",sans-serif;font-size:var(--fs);font-family:var(--ff);}
/* Acotado a #bkmapa: inyectado en un post, estas reglas NO pueden
   aplicarse a toda la pagina del tema. */
#bkmapa,#bkmapa *{box-sizing:border-box;} #bkmapa{position:relative;font-family:var(--ff);
  color:#0b2e52;line-height:normal;}
div#panel_mapa {background-color: #A4C3FF;}
/* ALTURA DEL MAPA. Inyectado en un post no puede ocupar la pantalla entera:
   80% de la ventana, nunca menos de 600 ni mas de 900. En un portatil de 13"
   salen unos 560-580 utiles, que es lo minimo manejable. */
#app_mapa{display:flex;height:clamp(800px,98vh,1100px);max-height:100%;}
#side_mapa{width:340px;min-width:340px;background:#f4f7fb;border-right:1px solid #d9e2ec;display:flex;flex-direction:column;overflow-y:auto;}
#side_mapa header{background:var(--bk);color:#fff;padding:12px 16px;position:sticky;top:0;z-index:5;}
.langsw{display:flex;gap:6px;margin-bottom:8px;}
.langsw button{flex:1;border:1px solid rgba(255,255,255,.4);background:transparent;color:#fff;border-radius:6px;padding:4px 0;font-size:calc(var(--fs) * 0.75);cursor:pointer;font-weight:600;}
.langsw button.on{background:#fff;color:var(--bk);border-color:#fff;}
#side_mapa header h1{margin:0;font-size:calc(var(--fs) * 1.125);color:#fff;}
#side_mapa header p{margin:5px 0 0;font-size:calc(var(--fs) * 0.7812);opacity:.88;line-height:1.45;}
#back_mapa{margin-top:10px;width:100%;border:none;background:var(--bk2);color:#fff;border-radius:8px;padding:11px 14px;font-size:calc(var(--fs) * 0.9062);cursor:pointer;font-weight:700;display:none;}
#back_mapa:hover{background:#2b6fb0;}
#panel_mapa{flex:1;}
.grp{padding:11px 18px 4px;} .grp h2{margin:0 0 7px;font-size:calc(var(--fs) * 0.7812);text-transform:uppercase;letter-spacing:.05em;color:#5a6b7d;}
label.tog{display:flex;align-items:center;gap:9px;font-size:calc(var(--fs) * 0.9062);padding:5px 0;cursor:pointer;}
label.tog .em{width:24px;text-align:center;font-size:calc(var(--fs) * 1.125);}
label.tog .cnt{margin-left:auto;font-size:calc(var(--fs) * 0.75);color:#8a99a8;background:#e7eef5;border-radius:10px;padding:1px 7px;}
.postbtn{display:block;position:relative;margin:6px 18px;padding:10px 26px 10px 11px;background:#f2f8ff;color:var(--bk);border:1px solid var(--bk2);border-left:4px solid var(--bk2);border-radius:8px;font-size:calc(var(--fs) * 0.7812);font-weight:600;line-height:1.3;text-decoration:none;box-shadow:0 1px 3px rgba(11,46,82,.15);}
.postbtn::after{content:"↗";position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--bk2);font-weight:700;}
.postbtn .pi{margin-right:6px;display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;vertical-align:-4px;font-size:calc(var(--fs) * 0.9375);}
.postbtn:hover{background:#fff;box-shadow:0 2px 8px rgba(11,46,82,.25);}
.posthead{margin:16px 18px 6px;font-size:calc(var(--fs) * 0.6875);font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--bk2);border-bottom:1px solid #dbe5f0;padding-bottom:5px;}
@keyframes pbflash{0%{background:#fff;}35%{background:#ffe9a8;border-color:#e0a800;}100%{background:#fff;}}
.postbtn.nuevo{animation:pbflash 1.1s ease-out 1;}
@media (prefers-reduced-motion:reduce){.postbtn.nuevo{animation:none;}}
.avguia{position:absolute;left:50%;transform:translateX(-50%);top:74px;z-index:1200;background:var(--bk);color:#fff;padding:11px 18px;border-radius:10px;font-size:calc(var(--fs) * 0.8125);font-weight:600;box-shadow:0 6px 22px rgba(11,46,82,.34);display:flex;align-items:center;gap:9px;cursor:pointer;animation:avin .32s ease-out;max-width:88%;}
.avguia .avx{font-size:calc(var(--fs) * 0.6875);font-weight:500;opacity:.8;}
@keyframes avin{from{opacity:0;transform:translate(-50%,-12px);}to{opacity:1;transform:translate(-50%,0);}}
.avguia.sale{opacity:0;transition:opacity .5s;}
.mzwrap{background:none;border:0;}
.mzpunto{display:inline-block;transform:translate(-50%,-50%);background:#fff;color:#0B2E52;
 border:1px solid #9fb3c8;border-radius:5px;padding:2px 7px;font-size:calc(var(--fs) * 0.7188);font-weight:600;
 white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.2);cursor:pointer;}
.mzpunto:hover{border-color:#0B2E52;background:#f5faff;}
.fi-tab{width:100%;margin-top:9px;border-collapse:collapse;font-size:calc(var(--fs) * 0.7188);}
.fi-tab td{padding:2px 0;border-bottom:1px solid #eef2f6;color:#445;line-height:1.35;}
.fi-tab td:last-child{text-align:right;font-weight:600;color:#0B2E52;white-space:nowrap;}
.fi-acc{margin-top:9px;display:flex;flex-wrap:wrap;gap:5px;}
.cta.mini{display:inline-block;margin:0;padding:6px 10px;font-size:calc(var(--fs) * 0.7188);line-height:1.2;border-radius:6px;}
.fi-com{margin-top:7px;padding:7px 9px;background:#f5faff;border-left:3px solid #0B2E52;font-size:calc(var(--fs) * 0.75);line-height:1.4;color:#334;border-radius:0 5px 5px 0;}
.fi-res{margin-top:6px;font-size:calc(var(--fs) * 0.75);line-height:1.4;color:#334;}
.guidebtn{display:block;margin:14px 18px;padding:14px 14px;background:var(--bk);color:#fff;border:none;border-radius:9px;font-size:calc(var(--fs) * 0.9375);font-weight:700;line-height:1.35;cursor:pointer;text-align:center;text-decoration:none;box-shadow:0 2px 6px rgba(11,46,82,.3);}
.guidebtn:hover{background:#09243f;}
.legend{padding:10px 18px 4px;} .legend h2{margin:0 0 7px;font-size:calc(var(--fs) * 0.7812);text-transform:uppercase;letter-spacing:.05em;color:#5a6b7d;}
.legrow{display:flex;align-items:center;gap:9px;font-size:calc(var(--fs) * 0.8125);padding:4px 0;}
.legrow .sw{width:16px;height:16px;border-radius:3px;flex:0 0 auto;}
.hint{font-size:calc(var(--fs) * 0.75);color:#8a99a8;padding:8px 18px 12px;}
.tools{padding:10px 18px;} .tools button{border:1px solid #cfd8e6;background:#fff;border-radius:8px;padding:6px 10px;font-size:calc(var(--fs) * 0.75);cursor:pointer;width:100%;}
#stage_mapa{flex:1;position:relative;overflow:hidden;}
#view-general_mapa{position:absolute;inset:0;overflow:auto;padding:14px;}
#genbox_mapa{position:relative;width:100%;border:1px solid #eef2f7;border-radius:12px;overflow:hidden;padding-top:24px;background:#fff;box-sizing:border-box;}
#genstage_mapa{position:relative;}
#genstage_mapa img{width:100%;display:block;}
/* BUSCADOR EN EL PORTAL. Arriba a la izquierda del mapa municipal. Arranca
   vacio y la comarca la pone el mapa: la que se esta viendo. Genera la
   direccion de busqueda del portal y la abre en otra pestana.
   Documentado en la guia de filtros por URL del portal. */
#buscaBtn_mapa{position:absolute;top:10px;right:10px;z-index:1100;background:#0b2e52;color:#fff;
  border:2px solid #fff;border-radius:9px;padding:8px 12px;cursor:pointer;
  font:700 calc(var(--fs) * 0.7812) var(--ff);box-shadow:0 2px 8px rgba(0,0,0,.35)}
#buscaBtn_mapa:hover{background:#2E7CD6}
#buscaPanel_mapa{position:absolute;top:10px;right:10px;z-index:1101;display:none;background:#fff;
  border:2px solid #cbd6e4;border-radius:11px;padding:11px;width:264px;
  box-shadow:0 8px 22px rgba(0,0,0,.3);font:calc(var(--fs) * 0.8125) var(--ff);color:#22364d}
#buscaPanel_mapa h4{margin:0 0 3px;font-size:calc(var(--fs) * 0.8438)}
#buscaPanel_mapa .zona{font-size:calc(var(--fs) * 0.7188);color:#5a6b7d;margin-bottom:8px}
#buscaPanel_mapa label{display:block;font-size:calc(var(--fs) * 0.6875);font-weight:700;color:#5a6b7d;
  text-transform:uppercase;letter-spacing:.3px;margin:7px 0 2px}
#buscaPanel_mapa select,#buscaPanel_mapa input[type=number]{width:100%;padding:6px 7px;
  border:1px solid #cbd6e4;border-radius:7px;font:calc(var(--fs) * 0.8125) var(--ff);color:#22364d}
#buscaPanel_mapa .fila{display:flex;gap:7px}
#buscaPanel_mapa .fila>div{flex:1}
#buscaPanel_mapa .chk{display:flex;align-items:center;gap:6px;margin-top:9px;font-size:calc(var(--fs) * 0.7812);
  font-weight:600;text-transform:none;letter-spacing:0;color:#22364d}
#buscaPanel_mapa .pie{display:flex;gap:7px;margin-top:11px}
#buscaIr_mapa{flex:1;background:#1E9E75;color:#fff;border:none;border-radius:8px;padding:9px;
  font:700 calc(var(--fs) * 0.8125) var(--ff);cursor:pointer}
#buscaIr_mapa:hover{filter:brightness(1.12)}
#buscaCerrar_mapa{background:#eef2f7;border:1px solid #cbd6e4;border-radius:8px;padding:9px 11px;
  cursor:pointer;font:600 calc(var(--fs) * 0.7812) var(--ff);color:#5a6b7d}
#view-muni_mapa{position:absolute;inset:0;}
#lmap_mapa{width:100%;height:100%;}
/* ===== ZOOM DEL MAPA GENERAL =====
   El escenario entero se amplia con una transformacion. Como todo lo que va
   encima esta colocado en porcentajes, se recoloca solo: no hay que tocar ni
   una coordenada.
   Los iconos NO crecen lo mismo que el mapa: crecen solo una cuarta parte.
   Asi ganan algo de tamano al acercarse, pero la distancia entre ellos crece
   mucho mas, que es lo que cura el solapamiento. Ese factor reducido llega
   desde el codigo en la variable --zi. */
#genstage_mapa{transform-origin:0 0}
#genstage_mapa.suave{transition:transform .14s ease-out}
/* El cursor dice lo que se puede hacer: al 100% no hay nada que arrastrar, asi
   que flecha normal. En cuanto se amplia, mano abierta; mientras se arrastra,
   mano cerrada. Sobre una comarca pinchable manda su propio cursor. */
#arrastreLbl_mapa{position:fixed;z-index:3000;display:none;pointer-events:none;
  background:#0b2e52;color:#fff;font:700 calc(var(--fs) * 0.7188) var(--ff);
  padding:3px 8px;border-radius:999px;box-shadow:0 2px 6px rgba(0,0,0,.35);white-space:nowrap}
#genbox_mapa.zoomable{touch-action:none}
#genbox_mapa.zoomable.puedearrastrar{cursor:grab}
#genbox_mapa.zoomable.puedearrastrar.arrastrando{cursor:grabbing}
#genbox_mapa.zoomable.arrastrando .zlabel,
#genbox_mapa.zoomable.arrastrando .badge{cursor:grabbing !important}
#genstage_mapa .badge{transform:translate(-50%,-50%) scale(var(--zi,1))}
#genstage_mapa .zlabel{transform:translate(-50%,-50%) scale(var(--zi,1))}
#genstage_mapa .zlabel.clk:hover{transform:translate(-50%,-50%) scale(calc(1.10 * var(--zi,1)))}
#genstage_mapa .eb{transform:translate(-50%,-50%) scale(var(--zi,1))}
#zoomctl_mapa{position:absolute;right:10px;bottom:10px;z-index:20;display:flex;gap:6px;
  background:rgba(255,255,255,.94);border-radius:9px;padding:5px 6px;
  box-shadow:0 2px 8px rgba(0,0,0,.22)}
#zoomctl_mapa button{width:30px;height:30px;border:1px solid #cbd6e4;background:#fff;
  border-radius:7px;font:700 calc(var(--fs) * 0.9375) var(--ff);color:#0b2e52;cursor:pointer;line-height:1}
#zoomctl_mapa button:hover{background:#eef4fb;border-color:#2E7CD6}
#zoomctl_mapa .zniv{min-width:44px;height:30px;display:flex;align-items:center;justify-content:center;
  font:600 calc(var(--fs) * 0.75) var(--ff);color:#5b6b80}
.zlabel{position:absolute;z-index:5;transform:translate(-50%,-50%);font-size:calc(var(--fs) * 0.8438);font-weight:bold;color:#0B2E52;white-space:nowrap;pointer-events:none;background:#fff;padding:1px 6px;border-radius:5px;box-shadow:0 0 0 1px #e3e9f2;}
.zlabel.clk{pointer-events:auto;cursor:pointer;color:#fff;background:#2E7CD6;box-shadow:0 2px 6px rgba(0,0,0,.35);padding:3px 9px;}
.zlabel.clk::after{content:" →";font-weight:900;opacity:.85;}
.zlabel.clk{transition:transform .12s ease, background .12s ease;animation:clkpulse 1.6s ease-out 3;}
.zlabel.clk:hover{background:#0b2e52;transform:translate(-50%,-50%) scale(1.10);animation:none;}
@keyframes clkpulse{0%{box-shadow:0 2px 6px rgba(0,0,0,.35),0 0 0 0 rgba(46,124,214,.55);}70%{box-shadow:0 2px 6px rgba(0,0,0,.35),0 0 0 11px rgba(46,124,214,0);}100%{box-shadow:0 2px 6px rgba(0,0,0,.35),0 0 0 0 rgba(46,124,214,0);}}
.badge.chincheta{cursor:pointer;transition:transform .12s ease;animation:clkpulse 1.6s ease-out 3;}
.badge.chincheta:hover{transform:translate(-50%,-50%) scale(1.18);animation:none;}
.badgeic{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:calc(var(--fs) * 0.8125);color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);}
.zlabel.post{pointer-events:auto;cursor:pointer;color:#fff;background:#1E9E75;box-shadow:0 2px 6px rgba(0,0,0,.35);padding:3px 9px;}
.zlabel.post:hover{background:#0f6e56;}
.zlabel.contact{pointer-events:auto;cursor:pointer;color:#fff;background:#607D8B;box-shadow:0 2px 6px rgba(0,0,0,.3);padding:3px 9px;}
.zlabel.contact:hover{background:#455a64;}
.badgen{margin-left:4px;background:rgba(255,255,255,.92);color:#22364d;border-radius:9px;
  font-size:calc(var(--fs) * 0.6562);font-weight:700;line-height:15px;min-width:15px;padding:0 4px;text-align:center}
.badge{position:absolute;z-index:4;transform:translate(-50%,-50%);min-width:24px;height:24px;border-radius:13px;color:#fff;font-size:calc(var(--fs) * 0.75);font-weight:bold;display:flex;align-items:center;justify-content:center;padding:0 6px;box-shadow:0 2px 5px rgba(0,0,0,.3);border:2px solid #fff;cursor:default;}
.pin{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;pointer-events:none;}
.pin .dot{font-size:calc(var(--fs) * 1.125);} .pin .pl{font-size:calc(var(--fs) * 0.625);background:#fff;border:1px solid #e0e6f0;border-radius:5px;padding:1px 4px;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.15);}
/* ETIQUETAS DE MICROZONA. En Marbella hay 23, en Mijas 20 y en Malaga 19, y
   con letra fija tapaban los iconos. Ahora ninguna desaparece: de lejos salen
   muy pequenas, casi una marca, y crecen con el zoom hasta leerse bien. Asi no
   hay que clasificar cuales son principales, que era el otro camino y se
   rompia cada vez que una microzona pasa de punto a poligono. */
/* Las etiquetas de las zonas con area se ven IGUAL que las de los pines
   (pastilla blanca con borde), para que todo el mapa hable el mismo idioma. */
.mzlabel{background:#fff;color:#0B2E52;border:1px solid #9fb3c8;border-radius:5px;
  padding:2px 7px;font-weight:600;white-space:nowrap;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
  font-size:calc(var(--fs) * 0.6875 * var(--mz,0.62));line-height:1.15;opacity:1;
  transition:font-size .15s ease;}
.mzlabel:before{display:none !important;}   /* sin la flechita del bocadillo */
.mzpunto{font-size:calc(var(--fs) * 0.6875 * var(--mz,0.62));transition:font-size .15s ease;}
.emoji-icon{font-size:calc(var(--fs) * 1.375);line-height:32px;text-align:center;width:32px;height:32px;background:#fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.35);border:1.5px solid #dbe3ee;}
.emoji-badge{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:calc(var(--fs) * 1.1875);box-shadow:0 1px 4px rgba(0,0,0,.45);border:2px solid #fff;}
/* BOTON DE GUIA. Verde y con recuadro, el mismo criterio que la tarjeta del
   mapa general: azul para moverse dentro de la herramienta, verde para leer
   una guia (abre en otra pestana), gris para contactar. Antes estos enlaces
   eran texto azul suelto y no se veia que se podian pinchar. */
.guiabtn{display:block;background:#1E9E75;color:#fff !important;text-decoration:none;
  border-radius:7px;padding:7px 10px;margin-top:5px;font:500 calc(var(--fs) * 0.7812) var(--ff);
  line-height:1.25;cursor:pointer;transition:filter .12s ease;}
.guiabtn:hover{filter:brightness(1.15);}
.guiahead{margin-top:9px;font:700 calc(var(--fs) * 0.6875) var(--ff);color:#8a99a8;
  letter-spacing:.5px;text-transform:uppercase;}
.destlist{padding:1px 0;color:#22364d;font-size:calc(var(--fs) * 0.7812);line-height:1.35;}
.pop b{color:var(--bk);}
.sitiobtn{display:block;margin:15px;padding:20px 12px;border-radius:0;border:1px solid #cbd6e4;background: #def344;color:#000;text-decoration:none;font-size:calc(var(--fs) * 0.8438);font-weight:500;transition:all .12s ease;}
.sitiobtn:hover{border-color:var(--bk2);box-shadow:0 2px 8px rgba(0,0,0,.14);}
.sitiobtn.destacado{background:var(--bk2);color:#fff;border-color:var(--bk2);}
.sitiobtn.destacado:hover{background:var(--bk);}
.moreinfo{margin-left:auto;font-size:calc(var(--fs) * 0.6875);font-weight:600;color:#fff;background:var(--bk2);border-radius:12px;cursor:pointer;white-space:nowrap;padding:3px 9px;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.cerrarx{position:absolute;top:4px;right:7px;font-size:calc(var(--fs) * 1);line-height:1;color:#8a99a8;cursor:pointer;font-weight:bold;}
.cerrarx:hover{color:#c0392b;}
.moreinfo:hover{background:var(--bk);}
#topbar_mapa{position:relative;}
.infobox{position:absolute;z-index:30;background:#fff;border:1px solid #cbd6e4;border-radius:10px;padding:9px 12px;box-shadow:0 6px 18px rgba(0,0,0,.22);min-width:250px;max-width:360px;}
.infobox .ih{font-size:calc(var(--fs) * 0.7188);color:#8a99a8;margin-bottom:5px;border-bottom:1px solid #eef2f7;padding-bottom:4px;}
.infobox a{display:block;font-size:calc(var(--fs) * 0.8438);font-weight:600;color:var(--bk2);text-decoration:none;padding:5px 0;}
.infobox a:hover{text-decoration:underline;} .pop .cat{display:inline-block;margin:4px 0;font-size:calc(var(--fs) * 0.6875);padding:2px 8px;border-radius:10px;color:#fff;}
.pop .cta{display:inline-block;margin-top:6px;color:#fff;background:var(--bk2);padding:4px 10px;border-radius:5px;font-size:calc(var(--fs) * 0.75);text-decoration:none;cursor:pointer;}
.pop .cta.contact{background:#8a99a8;}
.pop .cta.guia{background:#1E9E75;}
#tip_mapa{position:fixed;z-index:9999;max-width:280px;background:#0B2E52;color:#fff;font-size:calc(var(--fs) * 0.75);line-height:1.45;padding:9px 11px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.3);display:none;pointer-events:none;}
#tip_mapa b{color:#9ec3ec;}
/* TARJETA DE COMARCA. Antes era un aviso que seguia al raton y no se podia
   pinchar. Ahora es un menu con dos caminos: el mapa municipal y la guia de la
   zona. Por eso deja de perseguir al raton (nunca la alcanzarias), se queda
   anclada y tarda en cerrarse cuando sales, con tiempo para llegar hasta ella.
   Mientras el raton este encima, no se cierra.
   Pensada solo para raton: el mapa general no cabe en una pantalla de movil. */
#actioncard_mapa{position:fixed;z-index:9998;background:#fff;color:#0b2e52;
  padding:9px;border-radius:12px;box-shadow:0 8px 22px rgba(0,0,0,.3);
  display:none;pointer-events:auto;border:2px solid #cbd6e4;min-width:252px;}
#actioncard_mapa .ac-tit{font:700 calc(var(--fs) * 0.75) var(--ff);color:#5a6b7d;letter-spacing:.4px;
  text-transform:uppercase;padding:2px 4px 8px;}
#actioncard_mapa .ac-btn{display:block;text-decoration:none;color:#fff;border-radius:9px;
  padding:10px 13px;font:700 calc(var(--fs) * 0.9062) var(--ff);margin-bottom:7px;cursor:pointer;
  transition:filter .12s ease;}
#actioncard_mapa .ac-btn:last-child{margin-bottom:0;}
#actioncard_mapa .ac-btn:hover{filter:brightness(1.15);}
#actioncard_mapa .ac-mapa{background:#2E7CD6;}
#actioncard_mapa .ac-guia{background:#1E9E75;}
#actioncard_mapa .ac-sub{font:500 calc(var(--fs) * 0.75) var(--ff);opacity:.92;margin-top:2px;}
#actioncard_mapa.muni{border-color:#2E7CD6;}
#actioncard_mapa.post{border-color:#1E9E75;}
#actioncard_mapa.contact{border-color:#607D8B;}
#stage_mapa{display:flex;flex-direction:column;}
#stageinner_mapa{flex:1;position:relative;min-height:0;}
#topbar_mapa{background:#f4f7fb;border-bottom:1px solid #dde4ee;padding:10px 14px;}
#toplayers_mapa{display:flex;flex-wrap:wrap;gap:0 20px;align-items:flex-start;}
.grpblock{display:flex;flex-direction:column;gap:7px;padding:2px 20px 2px 0;border-right:1px solid #dbe3ee;margin-bottom:6px;}
.grpblock:last-of-type{border-right:none;}
.grphead{font-size:calc(var(--fs) * 0.75);text-transform:uppercase;letter-spacing:.07em;color:#5a6b7d;font-weight:800;}
.pills{display:flex;flex-wrap:wrap;gap:8px;}
.pill{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #cbd6e4;border-radius:20px;padding:7px 13px;font-size:calc(var(--fs) * 0.9062);cursor:pointer;user-select:none;transition:all .12s ease;white-space:nowrap;}
.pill input{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--bk2);}
.pill.on input{accent-color:#fff;}
.pill:hover{border-color:var(--bk2);box-shadow:0 1px 4px rgba(0,0,0,.12);}
.pill.on{background:var(--bk2);border-color:var(--bk2);color:#fff;}
.pill .n{font-size:calc(var(--fs) * 0.7812);opacity:.75;}
.pill .ic{font-size:calc(var(--fs) * 1.25);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1px solid #dbe3ee;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.2);}
.pill .ib{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:calc(var(--fs) * 1.1875);color:#fff;}
.pill .mi{margin-left:4px;font-size:calc(var(--fs) * 0.75);font-weight:700;background:var(--bk2);color:#fff;border-radius:12px;padding:3px 10px;}
.pill.on .mi{background:#fff;color:var(--bk2);}
.pill .mi:hover{background:var(--bk);}

#topbar_mapa .clearall{margin-left:auto;align-self:center;font-size:calc(var(--fs) * 0.8438);padding:7px 14px;border:1px solid #cbd6e4;background:#fff;border-radius:14px;cursor:pointer;}
#toast_mapa{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--bk);color:#fff;padding:10px 18px;border-radius:8px;font-size:calc(var(--fs) * 0.8125);box-shadow:0 4px 14px rgba(0,0,0,.3);display:none;z-index:9999;}
/* FICHA DE OBRA NUEVA · la misma que el prototipo del asesor */
.onficha{font:calc(var(--fs) * 0.8125)/1.45 var(--ff);color:#22364d}
.ont{font-weight:700;font-size:calc(var(--fs) * 0.9375);line-height:1.25;margin-bottom:2px}
.onref{font-weight:600;font-size:calc(var(--fs) * 0.7188);color:#7b8ca0;letter-spacing:.5px}
.onfin{display:inline-block;background:#3949AB;color:#fff;font-size:calc(var(--fs) * 0.7188);
  font-weight:600;padding:2px 9px;border-radius:11px;margin:6px 0 8px}
.onf{margin:3px 0}
.onf span{display:inline-block;min-width:88px;color:#7b8ca0;font-size:calc(var(--fs) * 0.7188);
  text-transform:uppercase;letter-spacing:.3px}
.onc{margin-top:8px}
.onc span{display:inline-block;background:#eef2f7;border-radius:9px;
  padding:2px 8px;margin:0 4px 4px 0;font-size:calc(var(--fs) * 0.7188)}
.onl{margin-top:10px;padding-top:8px;border-top:1px solid #eef2f7;font-size:calc(var(--fs) * 0.75)}
.onl.nopub{color:#7b8ca0;font-style:italic}
.onlista{margin-top:6px}
.onficha{min-width:min(340px,78vw)}
.onit{padding:6px 0;border-top:1px solid #eef2f7;font-size:calc(var(--fs) * 0.7812)}
.onit a{color:#0b2e52;font-weight:650;text-decoration:none}
.onit i{font-style:normal;color:#7b8ca0;font-size:calc(var(--fs) * 0.6875);letter-spacing:.4px}
.onit b{float:right;background:#3949AB;color:#fff;font-size:calc(var(--fs) * 0.6562);font-weight:600;
  padding:1px 7px;border-radius:9px;margin-left:6px}
.onit-cab{display:flex;align-items:center;justify-content:space-between;gap:8px}
.onit-ver{flex:none;background:#0b2e52;color:#fff !important;font-size:calc(var(--fs) * 0.6875);font-weight:650;
  text-decoration:none;padding:3px 9px;border-radius:999px;white-space:nowrap}
.onit-cont{background:#6b7c93 !important}
.onpr{color:#22364d;font-weight:600;margin-top:2px}
.onmas{margin-top:8px;font-size:calc(var(--fs) * 0.75);color:#7b8ca0;font-style:italic}
.fi-on{margin:8px 0 2px;font-size:calc(var(--fs) * 0.7812);color:#0b2e52;}

/* ===== REPARTO SEGUN EL ANCHO =====
   >=1100  : como siempre, panel de 340 al lado del mapa.
   780-1100: el panel se estrecha a 260 y el mapa se queda con el resto.
              Es el caso del portatil de 13" si el post no va a ancho completo.
   <780    : movil. El panel deja de ir al lado y pasa DEBAJO del mapa. */
@media (max-width:1100px){
  #side_mapa{width:260px;min-width:260px;}
  #side_mapa header h1{font-size:calc(var(--fs) * 1);}
  #side_mapa header p{font-size:calc(var(--fs) * 0.7188);}
  #topbar_mapa{padding:8px 10px;}
  #toplayers_mapa{gap:0 12px;}
}
@media (max-width:780px){
  #app_mapa{flex-direction:column-reverse;height:clamp(520px,86vh,900px);}
  #side_mapa{width:100%;min-width:0;max-height:42%;border-right:0;
             border-top:1px solid #d9e2ec;}
  #side_mapa header{position:static;}
  #stage_mapa{min-height:58%;}
  #buscaPanel_mapa{width:min(264px,calc(100% - 20px));}
}

/* ===== TIPOGRAFIA GALANO + CLAMP =====
   Botones, selectores y campos no heredan la fuente por defecto, y Leaflet
   pone la suya en el contenedor y en los globos. Se fuerza aqui. */
#bkmapa button,#bkmapa input,#bkmapa select,#bkmapa textarea{font-family:var(--ff);}
#bkmapa .leaflet-container{font-family:var(--ff);font-size:calc(var(--fs) * 0.75);}
#bkmapa .leaflet-popup-content{font-family:var(--ff);font-size:calc(var(--fs) * 0.8125);}
#bkmapa .leaflet-tooltip{font-family:var(--ff);font-size:calc(var(--fs) * 0.75);}

/* Forzar la fuente del sitio dentro del mapa: las reglas del tema y de
   Elementor sobre h1, button, input, a... ganan a la fuente heredada. */
#bkmapa,#bkmapa *:not([class*="fa-"]),#tip_mapa,#actioncard_mapa,#actioncard_mapa *:not([class*="fa-"]),#toast_mapa,#arrastreLbl_mapa{font-family:"Galano BK","Galano",sans-serif !important;}
/* Los iconos de Font Awesome (clases fa-...) quedan fuera de la regla anterior
   para conservar su propia fuente de iconos. */

/* ===== ICONOS FONT AWESOME =====
   Tamanos y centrado de los iconos de Font Awesome. Si Font Awesome no esta
   cargado, el mapa usa emojis y estas reglas no se aplican. */
.badge i{font-size:calc(var(--fs) * 0.8);line-height:1;}
.pill .ib i{font-size:calc(var(--fs) * 1.05);line-height:1;}
.emoji-icon,.emoji-badge{display:flex;align-items:center;justify-content:center;}
.emoji-icon{color:#22364d;}
.emoji-icon i,.emoji-badge i{font-size:calc(var(--fs) * 1);line-height:1;}
.postbtn .pi i{font-size:calc(var(--fs) * 0.8);line-height:1;}
.ibtn{display:inline-block;width:1.4em;text-align:center;}
