
/* Layout: barra de marca → una vista a la vez: catálogo (filtros, mapa, tarjetas), cédula (foto y mapa a la izquierda, datos a la derecha; en teléfono foto → datos → mapa) o selección para un cliente */
:root{
  --bg:#F7F5F2; --surface:#FFFFFF; --fg:#2B2B2B; --muted:#6B6E68; --line:#E3DFD7; --soft:#EEEAE2;
  --brand:#234F33; --brand-ink:#234F33; --on-brand:#F7F5F2; --accent:#B39445; --accent-ink:#7A6324; --tag:#D6C08D; --on-tag:#2B2B2B;
  --land:#E9EDE4; --land-alt:#DDE5D6; --land-line:#FFFFFF; --road-major:#E9D89F; --road:#FFFFFF; --road-case:#C9D2C1; --road-lbl:#4E5A4F; --road-halo:#F4F6F0; --water:#F2F0EB; --pin:#234F33; --pin-ink:#FFFFFF; --pin-active:#B39445;
  --shadow:0 1px 2px rgba(23,56,38,.06),0 8px 24px rgba(23,56,38,.08);
  --f-body:"Montserrat",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#101A14; --surface:#16231B; --fg:#ECE9E2; --muted:#A3A89F; --line:#2A3A30; --soft:#1C2B22;
  --brand:#1B3D28; --brand-ink:#9CCBAA; --on-brand:#F7F5F2; --accent:#D6C08D; --accent-ink:#D6C08D; --tag:#D6C08D; --on-tag:#2B2B2B;
  --land:#1A2A20; --land-alt:#203328; --land-line:#101A14; --road-major:#6E6240; --road:#34483B; --road-case:#0E1712; --road-lbl:#B9C2B6; --road-halo:#16231B; --water:#121D16; --pin:#7FB08F; --pin-ink:#101A14; --pin-active:#D6C08D;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.35); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#101A14; --surface:#16231B; --fg:#ECE9E2; --muted:#A3A89F; --line:#2A3A30; --soft:#1C2B22;
  --brand:#1B3D28; --brand-ink:#9CCBAA; --on-brand:#F7F5F2; --accent:#D6C08D; --accent-ink:#D6C08D; --tag:#D6C08D; --on-tag:#2B2B2B;
  --land:#1A2A20; --land-alt:#203328; --land-line:#101A14; --road-major:#6E6240; --road:#34483B; --road-case:#0E1712; --road-lbl:#B9C2B6; --road-halo:#16231B; --water:#121D16; --pin:#7FB08F; --pin-ink:#101A14; --pin-active:#D6C08D;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.35); color-scheme:dark}

*{box-sizing:border-box}
html,body{background:var(--bg)}
body{color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:30;background:var(--brand)}
a{color:inherit}
h1,h2{text-wrap:balance;margin:0}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* Barra de marca */
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--brand);color:var(--on-brand);
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:10px}
.bar-in{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:16px}
.bar img{height:34px;width:auto;display:block}
.bar .ttl{display:flex;flex-direction:column;line-height:1.15;border-left:1px solid rgba(247,245,242,.25);padding-left:16px;min-width:0}
.bar .ttl b{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:700}
.bar .ttl span{font-size:12px;opacity:.75}
.bar .sp{flex:1}
.bar a.btn{font-size:13px;font-weight:600;text-decoration:none;padding:8px 14px;border-radius:999px;border:1px solid rgba(247,245,242,.35);white-space:nowrap}
.bar a.btn:hover{background:rgba(247,245,242,.1)}

main{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:24px 48px}
body.con-sel main{padding-bottom:96px}

/* Cédula */
.ficha{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-template-areas:"foto datos" "mapa datos";gap:20px 24px;align-items:start}
.foto{grid-area:foto;margin:0;border-radius:14px;overflow:hidden;background:var(--soft);aspect-ratio:1361/980;max-width:100%}
.foto img{width:100%;height:100%;object-fit:cover;display:block}
.datos{grid-area:datos;background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;min-width:0}
.hd{background:var(--brand);color:var(--on-brand);padding:18px 20px}
.hd .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.badge{font:600 13px var(--f-mono);background:var(--tag);color:var(--on-tag);padding:3px 9px;border-radius:6px}
.badge.ghost{background:transparent;color:var(--on-brand);border:1px solid rgba(247,245,242,.35);font-family:var(--f-body);font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700}
.hd h1{font-size:clamp(22px,2.4vw,28px);font-weight:800;letter-spacing:-.015em;line-height:1.15;margin-top:12px}
.hd p{margin:6px 0 0;font-size:13px;line-height:1.4}
.hd p span{display:block;opacity:.8}

.renta{padding:16px 20px;border-bottom:1px solid var(--line)}
.lbl{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.renta strong{display:block;font-size:34px;font-weight:800;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums;color:var(--brand-ink)}
.renta strong.cotizar{font-size:22px;letter-spacing:-.01em;line-height:1.3}
.renta strong em,.cant em{font-style:normal;font-size:13px;color:var(--muted);font-weight:600;letter-spacing:0;margin-left:4px}
.costos{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}
.costos>div{padding:12px 20px;min-width:0;display:flex;flex-direction:column;justify-content:space-between}
.costos>div+div{border-left:1px solid var(--line)}
.cant{display:block;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}

.specs{display:grid;grid-template-columns:1fr 1fr;margin:0}
.specs div{padding:12px 20px;border-bottom:1px solid var(--line);min-width:0}
.specs div:nth-child(odd){border-right:1px solid var(--line)}
.specs dt{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.specs dd{margin:2px 0 0;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}

.acciones{padding:14px 20px 18px;display:flex;gap:8px;flex-wrap:wrap}
.btn2{display:inline-flex;align-items:center;justify-content:center;flex:1 1 auto;font:600 13px var(--f-body);text-decoration:none;padding:10px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--fg);cursor:pointer;white-space:nowrap}
.btn2:hover{background:var(--soft)}
.btn2.pri{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.btn2.pri:hover{filter:brightness(1.12);background:var(--brand)}
.btn2[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}

.mapa{grid-area:mapa;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 20px 18px;min-width:0}
.mapa-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.mapa h2{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--accent-ink)}
.mapa-h a{font-size:13px;font-weight:600;color:var(--accent-ink)}
.coords{font:500 12px var(--f-mono);color:var(--muted);margin:10px 0 0;overflow-wrap:anywhere}
.tambien{margin:12px 0 0;font-size:13px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tambien a{font:600 12px var(--f-mono);background:var(--soft);color:var(--brand-ink);padding:3px 8px;border-radius:6px;text-decoration:none}
.tambien a:hover{background:var(--line)}
.mas{margin-top:20px;text-align:center}
.mas a{font-size:13px;font-weight:600;color:var(--accent-ink)}

/* Mapa */
.mapwrap{position:relative;background:var(--water);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.mapwrap.big{height:min(62vh,560px);min-height:360px;box-shadow:var(--shadow)}
.mapwrap.mini{height:280px;border-radius:10px}
.mapwrap svg{display:block;width:100%;height:100%;touch-action:none;cursor:grab;user-select:none}
.mapwrap.mini svg{touch-action:auto;cursor:default}
.mapwrap svg.drag{cursor:grabbing}
.muni{stroke:var(--land-line);stroke-width:1.2;vector-effect:non-scaling-stroke}
.rd{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.rd.case{stroke:var(--road-case)}
.rd.s{stroke:var(--road);opacity:.9}
.rd.p{stroke:var(--road)}
.rd.mt{stroke:var(--road-major)}
.rlbl{font-family:var(--f-body);font-weight:600;fill:var(--road-lbl);stroke:var(--road-halo);stroke-width:3px;paint-order:stroke;stroke-linejoin:round;pointer-events:none;text-anchor:middle;dominant-baseline:central}
.plz rect{fill:var(--muted);opacity:.7}
.plz text{font-family:var(--f-body);font-weight:500;fill:var(--muted);font-size:10.5px;stroke:var(--road-halo);stroke-width:3px;paint-order:stroke;pointer-events:none}
.muni-lbl{font-family:var(--f-body);font-weight:700;letter-spacing:.18em;text-transform:uppercase;fill:var(--muted);opacity:.4;pointer-events:none}
.lm text{font-family:var(--f-body);font-style:italic;font-weight:600;fill:var(--fg);opacity:.75;stroke:var(--road-halo);stroke-width:3px;paint-order:stroke;pointer-events:none}
.lm path{fill:var(--muted);opacity:.6}
.pin{cursor:pointer;outline:none}
.pin:focus-visible circle.dot{stroke:var(--accent);stroke-width:3}
.pin circle.halo{fill:var(--pin);opacity:.18}
.pin circle.dot{fill:var(--pin);stroke:var(--surface);stroke-width:2}
.pin text.cnt{font:700 10px var(--f-mono);fill:var(--pin-ink);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.pin .lbl rect{fill:var(--surface);stroke:var(--line)}
.pin .lbl text{font:600 11px var(--f-mono);fill:var(--fg)}
.pin.on circle.dot{fill:var(--pin-active)}
.pin.on circle.halo{fill:var(--pin-active);opacity:.35}
.pin.dim{opacity:.18;pointer-events:none}
.pin.faint{opacity:.45}
.zoom{position:absolute;right:calc(12px + env(safe-area-inset-right,0px));top:12px;display:flex;flex-direction:column;gap:6px}
.zoom button{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--fg);font:600 18px var(--f-body);cursor:pointer;box-shadow:var(--shadow)}
.legend{position:absolute;left:12px;bottom:12px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:12px;color:var(--muted);display:flex;gap:6px 14px;align-items:center;flex-wrap:wrap;max-width:calc(100% - 24px)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend .d{width:10px;height:10px;border-radius:50%;background:var(--pin);display:inline-block}
.legend .d.n{width:16px;height:16px;font:700 9px var(--f-mono);font-style:normal;color:var(--pin-ink);display:inline-grid;place-items:center}
.credito{font-size:11px;color:var(--muted);margin:6px 0 0}
.pop{position:absolute;z-index:5;width:260px;max-width:calc(100% - 16px);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;transform:translate(-50%,calc(-100% - 18px))}
.pop img{width:100%;height:120px;object-fit:cover;display:block;background:var(--soft)}
.pop .b{padding:10px 12px 12px;display:grid;gap:4px;max-height:190px;overflow-y:auto}
.pop .row{display:flex;gap:10px;align-items:center;text-decoration:none;color:inherit;padding:6px;border-radius:8px;margin:0 -6px}
.pop .row:hover{background:var(--soft)}
.pop .row .t{min-width:0;flex:1}
.pop .row b{display:block;font-size:13px;line-height:1.2}
.pop .row small{color:var(--muted);font-size:12px}
.pop .go{font:600 12px var(--f-body);color:var(--accent-ink);white-space:nowrap}
.pop .x{position:absolute;top:6px;right:6px;width:28px;height:28px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:16px;cursor:pointer;line-height:1}

/* Catálogo */
.cat-h{margin-bottom:16px}
.cat-h h1{font-size:clamp(26px,3.4vw,38px);font-weight:800;letter-spacing:-.02em;line-height:1.1}
.cat-h p{margin:6px 0 0;color:var(--muted);max-width:65ch}
.menu-f{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;gap:12px;margin-bottom:16px}
.fila-f{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;align-items:center}
.fila-f input{width:100%;max-width:420px;min-width:0;font:500 14px var(--f-body);padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--fg)}
.res-f{display:flex;justify-content:space-between;align-items:center;gap:10px 16px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px}
.res-t{display:flex;align-items:baseline;gap:12px;font-variant-numeric:tabular-nums}
.res-t b{font-size:15px}
.limpiar{font:600 13px var(--f-body);color:var(--accent-ink);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline}
.res-a{display:flex;gap:8px;flex-wrap:wrap}
.res-a .btn2{flex:0 1 auto;padding:9px 14px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font:600 12px var(--f-body);padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--fg);cursor:pointer}
.chip i{font-style:normal;opacity:.6;margin-left:4px;font-variant-numeric:tabular-nums}
.chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:28px 0 14px}
.sec-h h2{font-size:18px;font-weight:700}
.sec-h span{color:var(--muted);font-size:13px}
.lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0}
.card>a{display:block;text-decoration:none;color:inherit;flex:1}
.card>a:hover b{text-decoration:underline}
.card .ph{aspect-ratio:1361/980;background:var(--soft);position:relative;max-width:100%}
.card .ph img{width:100%;height:100%;object-fit:cover;display:block}
.card .ph .badge{position:absolute;left:10px;top:10px}
.card .tx{padding:12px 14px 10px;display:grid;gap:2px}
.card b{font-size:15px;line-height:1.25}
.card small{font-size:12px;color:var(--muted);line-height:1.35}
.card .pr{margin-top:8px;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.card .pr em{font-style:normal;font-size:12px;color:var(--muted);font-weight:600;margin-left:4px}
.card .pr.cotizar{font-size:13px;color:var(--muted);font-weight:600}
.card .acc{display:flex;gap:6px;padding:0 14px 14px;flex-wrap:wrap}
.card .acc .btn2{padding:8px 10px;font-size:12px}
.inicio{max-width:560px;padding-block:32px;display:grid;gap:14px;justify-items:start}
.inicio h1{font-size:clamp(26px,3.4vw,38px);font-weight:800;letter-spacing:-.02em;line-height:1.1}
.inicio p{margin:0;color:var(--muted)}
.inicio .btn2{flex:none}
.nota-menu{margin:0 0 16px;padding:10px 14px;border-radius:10px;background:var(--soft);font-size:13px}
.nota-menu a{font-weight:600;color:var(--accent-ink)}
.vacio{color:var(--muted);padding:16px 0;grid-column:1/-1}

/* Selección */
.tabla{overflow-x:auto;margin-top:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.tabla table{border-collapse:collapse;width:100%;min-width:680px;font-size:13px;font-variant-numeric:tabular-nums}
.tabla th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:700;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.tabla td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.tabla tr:last-child td{border-bottom:0}
.tabla td a{font:600 13px var(--f-mono);color:var(--brand-ink)}
.envio{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;max-width:420px}

.barra-sel{position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--surface);border-top:1px solid var(--line);box-shadow:var(--shadow);
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:10px calc(10px + env(safe-area-inset-bottom,0px))}
.barra-sel>div{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap}
.barra-sel b{font-size:14px;flex:1 1 120px}
.barra-sel .btn2{flex:0 0 auto;padding:8px 14px}

footer{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 32px;color:var(--muted);font-size:12px}
footer div{border-top:1px solid var(--line);padding-top:16px;display:flex;justify-content:space-between;gap:8px 16px;flex-wrap:wrap}
body.con-sel footer{padding-bottom:96px}

/* Aviso de liga copiada */
.aviso{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:40;background:var(--fg);color:var(--bg);font-size:13px;font-weight:600;padding:10px 16px;border-radius:12px;box-shadow:var(--shadow);width:max-content;max-width:calc(100% - 32px);display:flex;gap:10px;align-items:center}
body.con-sel .aviso{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
.aviso input{font:500 12px var(--f-mono);width:240px;max-width:50vw;min-width:0;padding:6px 8px;border-radius:6px;border:0;background:var(--bg);color:var(--fg)}

@media (max-width:820px){
  .ficha{grid-template-columns:minmax(0,1fr);grid-template-areas:"foto" "datos" "mapa";gap:16px}
}
@media (max-width:520px){
  .fila-f{grid-template-columns:minmax(0,1fr);gap:6px}
  .res-a,.res-a .btn2{flex:1 1 100%}
  .bar .ttl span{display:none}
  .bar img{height:30px}
  .bar .ttl{padding-left:12px}
  .bar-in{gap:12px}
  .bar .ttl b{font-size:11px}
  .bar a.btn{padding:7px 12px;font-size:12px}
  main{padding-block:16px 40px}
  .mapwrap.big{height:58vh}
  .legend{font-size:11px;padding:6px 10px}
}

.acceso{max-width:380px;margin:0 auto;padding-block:48px;display:grid;gap:14px}
.acceso h1{font-size:26px;font-weight:800;letter-spacing:-.02em}
.acceso p{margin:0;color:var(--muted)}
.acceso input{width:100%;font:500 15px var(--f-body);padding:11px 16px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--fg)}
.acceso .error{color:#A32A2A}
.salir{font-size:13px;font-weight:600;color:var(--on-brand);opacity:.85}
