/* ============================================================
   ThePriceMap — hoja de estilos
   Paleta: fondo profundo azul-noche + dorado. Minimalismo Notion.
   ============================================================ */
:root{
  --bg:#0b1120;
  --bg2:#111a2e;
  --panel:rgba(18,26,45,.82);
  --panel-solid:#141d33;
  --line:rgba(255,255,255,.10);
  --line-strong:rgba(255,255,255,.18);
  --ink:#eef2f9;
  --ink-dim:#93a2bd;
  --ink-faint:#5d6c88;
  --gold:#e3b341;
  --gold-soft:rgba(227,179,65,.14);
  --gold-line:rgba(227,179,65,.38);
  --blue:#4a90d9;
  --ok:#5cb85c;
  --warn:#e8a33d;
  --bad:#e05c7a;
  --r:14px;
  --r-sm:9px;
  --shadow:0 18px 50px -12px rgba(0,0,0,.75);
  --font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--ink);
  overflow:hidden;
  -webkit-font-smoothing:antialiased;
}
button,input,select{font-family:inherit;font-size:inherit;color:inherit}
a{color:var(--gold);text-decoration:none}

/* ---------- layout ---------- */
#shell{display:grid;grid-template-rows:auto 1fr;height:100vh;height:100dvh;
  max-height:100dvh;overflow:hidden}
@supports (height:100svh){
  #shell{height:100svh;max-height:100svh}
}

/* ---------- barra superior ---------- */
header{
  display:flex;align-items:center;gap:14px;
  padding:10px 16px;
  background:rgba(11,17,32,.86);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  z-index:900;
  flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.2px}
.brand .mark{
  width:30px;height:30px;border-radius:9px;
  background:linear-gradient(140deg,var(--gold),#b8862a);
  display:grid;place-items:center;
  box-shadow:0 4px 14px rgba(227,179,65,.35);
}
.brand .mark svg{width:18px;height:18px}
.brand .txt b{font-size:15px}
.brand .txt span{display:block;font-size:10px;color:var(--ink-faint);font-weight:500;letter-spacing:.4px;text-transform:uppercase}

nav.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{
  border:1px solid var(--line);background:rgba(255,255,255,.03);
  padding:6px 12px;border-radius:99px;cursor:pointer;
  font-size:12.5px;font-weight:600;color:var(--ink-dim);
  transition:.18s;white-space:nowrap;
}
.pill:hover{border-color:var(--gold-line);color:var(--ink);background:var(--gold-soft)}
.pill.on{background:var(--gold);color:#1a1204;border-color:var(--gold)}

.spacer{flex:1}

.tools{display:flex;gap:7px;align-items:center}
select.ctl{
  background:var(--panel-solid);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:6px 9px;font-size:12.5px;cursor:pointer;
}
.btn{
  border:1px solid var(--line-strong);background:rgba(255,255,255,.04);
  border-radius:var(--r-sm);padding:7px 13px;cursor:pointer;
  font-size:12.5px;font-weight:600;transition:.18s;
}
.btn:hover{background:rgba(255,255,255,.09)}
.btn.gold{background:var(--gold);color:#1a1204;border-color:var(--gold);font-weight:700}
.btn.gold:hover{filter:brightness(1.08)}
.btn svg{width:14px;height:14px;vertical-align:-2px}

/* ---------- zona principal ---------- */
#stage{position:relative;overflow:hidden;min-height:0;height:100%}

#map{position:absolute;inset:0;background:#0b1120;z-index:1}
/* ===== MAPA: CARTO no necesita filtros. Se controla por tema. ===== */
.leaflet-container{background:#0b1120}
.leaflet-tile{filter:none}

/* ===== MODO CLARO ===== */
body.theme-light{
  --bg:#f3f5f9;
  --bg2:#e8ecf3;
  --panel:rgba(255,255,255,.88);
  --panel-solid:#ffffff;
  --line:rgba(15,25,45,.13);
  --line-strong:rgba(15,25,45,.22);
  --ink:#17202f;
  --ink-dim:#5a6780;
  --ink-faint:#8b96ab;
  --gold:#b8860b;
  --gold-soft:rgba(184,134,11,.12);
  --gold-line:rgba(184,134,11,.42);
}
body.theme-light .leaflet-container{background:#eef1f6}
body.theme-light header{background:rgba(243,245,249,.9)}
body.theme-light .leaflet-bar a{background:#fff!important;color:#17202f!important;border-color:rgba(15,25,45,.15)!important}
body.theme-light .leaflet-popup-content-wrapper,
body.theme-light .leaflet-popup-tip{background:#fff;color:#17202f;border-color:rgba(15,25,45,.15)}
body.theme-light .leaflet-control-attribution{background:rgba(255,255,255,.85)!important;color:#8b96ab!important}
body.theme-light .leaflet-control-attribution a{color:#5a6780!important}
body.theme-light .pill{background:rgba(15,25,45,.04)}
body.theme-light .btn{background:rgba(15,25,45,.045)}
body.theme-light .btn:hover{background:rgba(15,25,45,.09)}
body.theme-light .card{background:rgba(15,25,45,.025)}
body.theme-light .card:hover{background:rgba(15,25,45,.055)}
body.theme-light .cat{background:rgba(15,25,45,.035)}
body.theme-light .cat:hover{background:rgba(15,25,45,.08)}
body.theme-light .fld input,body.theme-light .fld select,body.theme-light .fld textarea{
  background:rgba(15,25,45,.04)}
body.theme-light select.ctl{background:#fff}
body.theme-light .gap{background:rgba(15,25,45,.015)}
body.theme-light .chip{background:rgba(15,25,45,.05)}
.leaflet-control-attribution{
  background:rgba(11,17,32,.7)!important;color:var(--ink-faint)!important;font-size:9px!important;
}
.leaflet-control-attribution a{color:var(--ink-dim)!important}
.leaflet-bar a{
  background:var(--panel-solid)!important;color:var(--ink)!important;border-color:var(--line)!important;
}
.leaflet-bar a:hover{background:#1b2740!important}

/* ---------- panel lateral ---------- */
aside{
  position:absolute;top:14px;left:14px;bottom:14px;
  width:min(392px, calc(100vw - 28px));
  max-width:calc(100vw - 28px);
  background:var(--panel);backdrop-filter:blur(18px);
  border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);z-index:800;
  display:flex;flex-direction:column;overflow:hidden;
  transition:transform .32s cubic-bezier(.4,0,.2,1),opacity .3s;
}
aside.hidden{transform:translateX(calc(-100% - 30px));opacity:0;pointer-events:none}
.aside-head{padding:15px 16px 12px;border-bottom:1px solid var(--line);min-width:0}
.aside-head h1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.aside-head h1{font-size:20px;letter-spacing:-.4px;display:flex;align-items:center;gap:8px}
.aside-head h1 .flag{font-size:17px}
.aside-head p{font-size:12px;color:var(--ink-dim);margin-top:4px;line-height:1.5}
.aside-head .meta{
  display:flex;gap:6px;margin-top:11px;flex-wrap:wrap;
}
.chip{
  font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:99px;
  background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink-dim);
  text-transform:uppercase;letter-spacing:.4px;
}
.chip.gold{background:var(--gold-soft);border-color:var(--gold-line);color:var(--gold)}

.cat-row{
  display:flex;gap:7px;padding:11px 16px;overflow-x:auto;
  border-bottom:1px solid var(--line);scrollbar-width:none;
  /* que el ultimo chip se pueda ver entero al deslizar */
  scroll-padding-inline:16px;
  -webkit-overflow-scrolling:touch;
}
.cat-row::after{content:'';flex:0 0 4px}
.cat-row::-webkit-scrollbar{display:none}
.cat{
  display:flex;align-items:center;gap:6px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);
  padding:5px 11px;border-radius:99px;cursor:pointer;font-size:12px;font-weight:600;
  color:var(--ink-dim);transition:.16s;white-space:nowrap;
}
.cat:hover{background:rgba(255,255,255,.08);color:var(--ink)}
.cat.on{color:#fff;border-color:currentColor}
.cat i.dot{width:7px;height:7px;border-radius:99px;background:currentColor;display:block}

#list{flex:1;overflow-y:auto;padding:11px;min-width:0;overflow-x:hidden}
#list::-webkit-scrollbar{width:7px}
#list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:9px}

.card{
  border:1px solid var(--line);background:rgba(255,255,255,.028);
  border-radius:var(--r-sm);padding:12px 13px;margin-bottom:9px;
  cursor:pointer;transition:.18s;position:relative;overflow:hidden;
}
.card:hover{background:rgba(255,255,255,.058);border-color:var(--line-strong);transform:translateX(2px)}
.card::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c,#888);
}
.card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.card-name{font-size:13.5px;font-weight:650;line-height:1.3}
.card-place{font-size:11px;color:var(--ink-faint);margin-top:2px}
.card-price{text-align:right;flex-shrink:0}
.card-price b{font-size:16px;color:var(--gold);letter-spacing:-.3px;display:block}
.card-price small{font-size:10px;color:var(--ink-faint)}
.card-foot{
  display:flex;justify-content:space-between;align-items:center;
  margin-top:9px;padding-top:8px;border-top:1px solid var(--line);
  font-size:10.5px;color:var(--ink-faint);
}
.tagv{
  display:inline-flex;align-items:center;gap:3px;font-weight:700;
  padding:2px 7px;border-radius:99px;font-size:9.5px;text-transform:uppercase;letter-spacing:.3px;
}
.tagv.ok{background:rgba(92,184,92,.16);color:var(--ok)}
.tagv.wait{background:rgba(147,162,189,.16);color:var(--ink-dim)}
.tagv.stale{background:rgba(224,92,122,.16);color:var(--bad)}

/* ---------- huecos ---------- */
.gap{
  border:1px dashed var(--line-strong);border-radius:var(--r-sm);
  padding:15px;text-align:center;margin-bottom:9px;
  background:rgba(255,255,255,.014);transition:.18s;
}
.gap:hover{border-color:var(--gold-line);background:var(--gold-soft)}
.gap p{font-size:12px;color:var(--ink-dim);margin-bottom:9px;line-height:1.5}
.gap b{color:var(--ink)}
.gap .btn{margin:0 3px}

/* ---------- leyenda ---------- */
#legend{
  position:absolute;right:14px;bottom:14px;z-index:800;
  background:var(--panel);backdrop-filter:blur(16px);
  border:1px solid var(--line);border-radius:var(--r-sm);
  padding:11px 13px;box-shadow:var(--shadow);font-size:11px;
  max-width:196px;
}
#legend h4{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-faint);margin-bottom:8px}
#legend .it{display:flex;align-items:center;gap:7px;margin-bottom:5px;color:var(--ink-dim)}
#legend .sw{width:9px;height:9px;border-radius:99px;flex-shrink:0}

/* ---------- boton flotante movil ---------- */
#toggleAside{
  display:none;position:absolute;top:14px;left:14px;z-index:850;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:9px 12px;cursor:pointer;backdrop-filter:blur(12px);box-shadow:var(--shadow);
}
#toggleAside svg{width:16px;height:16px;display:block}

/* ---------- modal ---------- */
.ovl{
  position:fixed;inset:0;background:rgba(4,8,18,.74);backdrop-filter:blur(5px);
  z-index:2000;display:none;place-items:center;padding:18px;
}
.ovl.on{display:grid}
.modal{
  background:var(--panel-solid);border:1px solid var(--line-strong);
  border-radius:var(--r);width:100%;max-width:468px;max-height:90vh;overflow-y:auto;
  box-shadow:var(--shadow);
}
.modal-h{
  padding:16px 18px;border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;
  position:sticky;top:0;background:var(--panel-solid);z-index:2;
}
.modal-h h3{font-size:16px;letter-spacing:-.2px}
.x{background:none;border:none;cursor:pointer;color:var(--ink-faint);font-size:22px;line-height:1;padding:0 4px}
.x:hover{color:var(--ink)}
.modal-b{padding:18px}
.fld{margin-bottom:14px}
.fld label{display:block;font-size:11.5px;font-weight:700;color:var(--ink-dim);margin-bottom:5px;text-transform:uppercase;letter-spacing:.4px}
.fld input,.fld select,.fld textarea{
  width:100%;background:rgba(0,0,0,.28);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:10px 11px;font-size:13.5px;outline:none;transition:.16s;
}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--gold-line);background:rgba(0,0,0,.4)}
.fld small{display:block;font-size:10.5px;color:var(--ink-faint);margin-top:5px;line-height:1.45}
.two{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.foot{display:flex;gap:9px;justify-content:flex-end;margin-top:18px;padding-top:15px;border-top:1px solid var(--line)}

/* ---------- toast ---------- */
#toast{
  position:fixed;bottom:22px;left:50%;transform:translate(-50%,90px);
  background:var(--panel-solid);border:1px solid var(--gold-line);
  border-radius:99px;padding:11px 20px;font-size:13px;font-weight:600;
  box-shadow:var(--shadow);z-index:3000;transition:transform .3s;pointer-events:none;
}
#toast.on{transform:translate(-50%,0)}

/* ---------- cuenta ---------- */
.avatar{
  width:29px;height:29px;border-radius:99px;background:linear-gradient(140deg,var(--gold),#b8862a);
  display:grid;place-items:center;font-size:12px;font-weight:800;color:#1a1204;
}
@media(max-width:820px){
  aside{width:calc(100% - 28px);top:62px}
  #toggleAside{display:block}
  #legend{display:none}
  .tools select.ctl{font-size:11.5px;padding:5px 7px}
}

/* ---------- pins del mapa ---------- */
.tpm-pin{
  width:34px;height:34px;border-radius:50% 50% 50% 6px;
  transform:rotate(-45deg);
  background:var(--pc,#e3b341);
  display:grid;place-items:center;
  border:2.5px solid rgba(11,17,32,.9);
  box-shadow:0 6px 16px rgba(0,0,0,.55), 0 0 0 3px rgba(255,255,255,.07);
  transition:transform .16s, box-shadow .16s;
}
.tpm-pin span{transform:rotate(45deg);display:block}
.tpm-pin:hover{transform:rotate(-45deg) scale(1.16);
  box-shadow:0 8px 22px rgba(0,0,0,.65),0 0 0 6px rgba(227,179,65,.22)}
.tpm-pin.pulse{animation:pulse 2.4s infinite}
@keyframes pulse{
  0%,100%{box-shadow:0 6px 16px rgba(0,0,0,.55),0 0 0 3px rgba(92,184,92,.2)}
  50%{box-shadow:0 6px 16px rgba(0,0,0,.55),0 0 0 11px rgba(92,184,92,0)}
}
.leaflet-popup-content-wrapper{
  background:#141d33;color:#eef2f9;border-radius:11px;
  border:1px solid rgba(255,255,255,.14);box-shadow:0 18px 50px -12px rgba(0,0,0,.8);
}
.leaflet-popup-content{margin:12px 14px;font-family:var(--font)}
.leaflet-popup-tip{background:#141d33;border:1px solid rgba(255,255,255,.14)}
.leaflet-popup-close-button{color:#5d6c88!important;font-size:19px!important;padding:6px 8px 0 0!important}
.leaflet-popup-close-button:hover{color:#eef2f9!important}

/* ---------- animacion de entrada ---------- */
@keyframes riseIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.card,.gap{animation:riseIn .3s both}
.card:nth-child(1){animation-delay:.01s}.card:nth-child(2){animation-delay:.03s}
.card:nth-child(3){animation-delay:.05s}.card:nth-child(4){animation-delay:.07s}
.card:nth-child(5){animation-delay:.09s}.card:nth-child(6){animation-delay:.11s}


/* ============================================================
   MOVIL: que NADA se salga de la pantalla.
   Los problemas reales en un telefono de 390px:
   - La barra de arriba tenia demasiados botones -> "Jubilados" se cortaba.
   - La fila de categorias no hacia scroll -> "Productos" se cortaba.
   - La fila de ciudades no hacia scroll -> la ultima quedaba fuera.
   ============================================================ */
@media(max-width:820px){
  /* 1) Barra de herramientas: los enlaces de seccion se van a una segunda
        fila con scroll horizontal. Nunca se cortan. */
  header .tools{
    width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    flex-wrap:nowrap;
    padding-bottom:3px;
  }
  header .tools::-webkit-scrollbar{display:none}
  header .tools .btn,
  header .tools select.ctl{flex:0 0 auto}

  /* 2) Ciudades: scroll horizontal en vez de cortarse */
  nav.pills{
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    flex-wrap:nowrap;
    width:100%;
  }
  nav.pills::-webkit-scrollbar{display:none}
  nav.pills .pill{flex:0 0 auto}

  /* 3) Categorias: scroll horizontal en vez de cortarse */
  .cat-row{
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    flex-wrap:nowrap;
  }
  .cat-row::-webkit-scrollbar{display:none}
  .cat-row .cat{flex:0 0 auto}

  /* 4) El header se apila: marca arriba, herramientas debajo */
  header{flex-wrap:wrap;gap:7px}

  /* 5) Nada puede desbordar horizontalmente jamas */
  html,body{max-width:100%;overflow-x:hidden}
  #shell{max-width:100vw}
}


/* ============================================================
   AJUSTE REAL DE TAMANOS (29/09/2026)
   Medido: en un movil de 390px el aside medía 794px y el mapa 822px.
   El contenido se pintaba al DOBLE de la pantalla. Aqui se corrige.
   ============================================================ */

/* 1) EL MAPA: nunca mas ancho que la pantalla */
#map, #stage, .leaflet-container{
  max-width:100vw !important;
  width:100% !important;
}
.leaflet-container{font-size:11.5px}

/* 2) EL PANEL (aside): en escritorio 392px, en movil la pantalla entera */
aside{
  width:min(392px, calc(100vw - 28px));
  max-width:calc(100vw - 28px);
}

/* 3) PILLS DE CIUDAD y HERRAMIENTAS: que quepan y hagan scroll,
      nunca que estiren el layout a lo ancho */
nav.pills, header .tools{
  max-width:100%;
  min-width:0;
}
header{max-width:100vw;overflow-x:hidden}

/* 4) En movil el panel va a pantalla completa de ancho (menos margen) */
@media(max-width:820px){
  aside{
    width:calc(100vw - 20px) !important;
    max-width:calc(100vw - 20px) !important;
    left:10px !important;
    right:10px !important;
  }
  #legend{display:none}
  /* el mapa ocupa todo el alto disponible */
  #stage{height:100%}
  #map{position:absolute;inset:0}
  /* tarjetas de precio mas comodas en pantalla pequena */
  .card-name{font-size:13px}
  .card-price b{font-size:15px}
  /* la cabecera no se estira */
  header{border-radius:0}
  .brand{min-width:0;overflow:hidden}
  .brand .txt b{font-size:14px}
  .brand .txt span{display:none}
}

/* 5) Moviles muy estrechos (320px) */
@media(max-width:380px){
  aside{width:calc(100vw - 12px) !important;max-width:calc(100vw - 12px) !important;left:6px !important;right:6px !important}
  .tools .btn{padding:6px 10px;font-size:11.5px}
  .pill{padding:5px 9px;font-size:11.5px}
}

/* 6) Nada puede crear scroll horizontal nunca */
html, body{overflow-x:hidden;max-width:100vw}
#shell{max-width:100vw;overflow-x:hidden}
.leaflet-pane, .leaflet-map-pane{max-width:100vw}


/* ============================================================
   AJUSTE FINO MOVIL (29/09/2026, 2a pasada)
   Medido despues de la 1a correccion: el mapa y el aside ya cabian,
   pero dentro del panel el ultimo filtro se cortaba.
   ============================================================ */
@media(max-width:820px){
  .aside-head{padding:13px 13px 10px}
  .aside-head h1{font-size:17px}
  .cat-row{padding:9px 13px}
  .cat{padding:5px 10px;font-size:11.5px}
  #list{padding:9px}
  .card{padding:11px 12px}
  .card-price b{font-size:14.5px}
  .card-price small{font-size:10px}
}
@media(max-width:400px){
  .aside-head h1{font-size:16px}
  .cat{padding:4px 9px;font-size:11px}
  .cat-row{padding:8px 11px}
  .aside-head{padding:11px 11px 9px}
}


/* Indicador de "hay mas filtros a la derecha": un degradado sutil.
   Sin esto, el usuario cree que la lista termina en el filtro cortado. */
@media(max-width:820px){
  .cat-row, nav.pills, header .tools{
    position:relative;
    background:
      linear-gradient(to right, transparent calc(100% - 26px), var(--panel) 100%);
  }
  .cat-row{padding-right:30px}
  nav.pills{padding-right:30px}
  header .tools{padding-right:30px}
}


/* ---------- FOTO EN LA TARJETA + VISOR A LO GRANDE (30/09/2026) ---------- */
.card-foto{
  margin:-12px -13px 10px;border-bottom:1px solid var(--line);
  background:rgba(0,0,0,.3);overflow:hidden;
}
.card-foto img{
  display:block;width:100%;height:145px;object-fit:cover;cursor:zoom-in;
  transition:transform .25s;
}
.card-foto img:hover{transform:scale(1.04)}

.foto-ovl{
  position:fixed;inset:0;z-index:3000;background:rgba(6,10,20,.94);
  display:none;align-items:center;justify-content:center;padding:18px;
  backdrop-filter:blur(4px);
}
.foto-ovl.on{display:flex}
.foto-ovl img{
  max-width:100%;max-height:86vh;border-radius:13px;object-fit:contain;
  box-shadow:0 24px 70px rgba(0,0,0,.75);
}
.foto-x{
  position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:99px;
  border:1px solid var(--line);background:rgba(11,17,32,.9);color:#fff;
  font-size:25px;line-height:1;cursor:pointer;display:grid;place-items:center;
}
.foto-cap{
  position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#eaf0fb;
  font-size:13px;font-weight:600;text-shadow:0 2px 8px rgba(0,0,0,.8);padding:0 18px;
}

/* Camara / galeria / geolocalizacion dentro del formulario */
.foto-row{display:flex;gap:7px;margin-top:2px}
.foto-btn{flex:1;display:flex;justify-content:center;padding:9px 10px;font-size:12.5px}
.prev-box{position:relative;margin-top:9px;border:1px solid var(--line);border-radius:11px;
  overflow:hidden;background:rgba(0,0,0,.25)}
.prev-box img{display:block;width:100%;max-height:230px;object-fit:cover}
.prev-x{position:absolute;top:7px;right:7px;width:29px;height:29px;border-radius:99px;
  border:none;background:rgba(11,17,32,.85);color:#fff;font-size:19px;line-height:1;
  cursor:pointer;display:grid;place-items:center}
.prev-t{position:absolute;bottom:0;left:0;right:0;background:rgba(11,17,32,.82);
  color:#eaf0fb;font-size:10.5px;padding:4px 9px}
.geo-row{display:flex;gap:7px;margin-top:8px}
.geo-btn{flex:1;display:flex;justify-content:center;padding:8px 10px;font-size:12.5px}
.geo-btn.on{border-color:var(--gold);color:var(--gold);background:rgba(227,179,65,.10)}
.geo-info{margin-top:8px;font-size:11.5px;color:var(--green);background:rgba(92,184,92,.10);
  border:1px solid rgba(92,184,92,.28);border-radius:9px;padding:7px 10px;line-height:1.5}
.geo-info.err{color:#e08a8a;background:rgba(224,92,122,.10);border-color:rgba(224,92,122,.30)}
@media(max-width:420px){ .foto-row,.geo-row{flex-direction:column} }


/* ============================================================
   UBICACION DEL USUARIO (30/09/2026)
   Punto azul "estas aqui", circulo de precision y aviso de permiso.
   ============================================================ */

/* El punto azul de "estas aqui", con el halo que late */
.yo-punto{
  width:22px;height:22px;position:relative;
}
.yo-punto span{
  position:absolute;inset:0;border-radius:50%;
  background:#4a90d9;border:3px solid #fff;
  box-shadow:0 2px 10px rgba(0,0,0,.55);
}
.yo-punto::before{
  content:'';position:absolute;inset:-9px;border-radius:50%;
  background:rgba(74,144,217,.28);animation:yoLate 2.2s infinite;
}
@keyframes yoLate{
  0%{transform:scale(.55);opacity:.85}
  70%{transform:scale(1.5);opacity:0}
  100%{transform:scale(1.5);opacity:0}
}

/* Aviso de permiso de ubicacion */
#geoPrompt{
  position:absolute;top:14px;right:14px;z-index:850;
  background:var(--panel);border:1px solid var(--line);border-radius:15px;
  box-shadow:0 18px 48px -14px rgba(0,0,0,.75);
  padding:13px 15px;display:none;align-items:center;gap:11px;
  max-width:min(430px, calc(100vw - 28px));
  animation:riseIn .28s both;
}
#geoPrompt.on{display:flex}
#geoPrompt .gp-i{font-size:22px;line-height:1;flex:0 0 auto}
#geoPrompt .gp-t{min-width:0;flex:1}
#geoPrompt .gp-t b{display:block;font-size:13.5px;font-weight:800;margin-bottom:2px}
#geoPrompt .gp-t span{display:block;font-size:11.5px;color:var(--ink-dim);line-height:1.45}
#geoPrompt .btn{flex:0 0 auto;padding:6px 13px;font-size:12px}
#geoPrompt .gp-x{
  position:absolute;top:5px;right:8px;background:none;border:none;cursor:pointer;
  color:var(--ink-faint);font-size:18px;line-height:1;padding:2px;
}

/* En movil el aviso va abajo del todo, sin tapar el mapa */
@media(max-width:820px){
  #geoPrompt{
    top:auto;bottom:14px;left:14px;right:14px;max-width:none;
    flex-wrap:wrap;
  }
  #geoPrompt .gp-t{flex:1 1 100%;order:-1}
  #geoPrompt .gp-i{position:absolute;top:12px;right:34px}
  #geoPrompt .btn{flex:1}
}
