/* /alojamientos/explorar.css — página pública de alojamientos (Rebed) */
:root{
  --ink:#222; --mut:#6a6a6a; --line:#dddddd; --soft:#ebebeb; --hover:#f7f7f7; --bg2:#f2f2f2;
  --rb:#2d8659; --rbd:#236b47; --rbsoft:#eaf5ef; --alert:#c13515; --heart:#e5484d;
  --hh:154px;               /* alto de la cabecera; lo ajusta el JS */
  --sh-pop:0 10px 40px rgba(0,0,0,.14), 0 0 0 1px rgba(0,0,0,.04);
}
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{ margin:0; background:#fff; color:var(--ink); font-family:'Figtree',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  font-size:15px; line-height:1.45; -webkit-font-smoothing:antialiased; }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
svg{ flex:none; }
button{ font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer; }
input{ font:inherit; color:inherit; }
[hidden]{ display:none !important; }
:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; border-radius:6px; }
body.ex-lock{ overflow:hidden; }

/* =================== Cabecera =================== */
.ex-top{ position:sticky; top:0; z-index:500; background:#fff; }
.ex-top-in{ height:80px; max-width:1880px; margin:0 auto; padding:0 40px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:20px; }
.ex-logo{ justify-self:start; }
.ex-logo img{ height:32px; width:auto; }
.ex-acts{ justify-self:end; display:flex; align-items:center; gap:4px; }
.ex-lnk{ height:42px; padding:0 14px; border-radius:21px; display:inline-flex; align-items:center; gap:8px; font-size:14.5px; font-weight:600; white-space:nowrap; }
.ex-lnk:hover{ background:var(--hover); }
.ex-prop{ font-weight:500; color:var(--mut); }
.ex-prop:hover{ color:var(--ink); }
.ex-guar em, .ex-fbtn em{ font-style:normal; min-width:20px; height:20px; padding:0 6px; border-radius:10px; background:var(--ink); color:#fff;
  font-size:11.5px; font-weight:600; display:inline-grid; place-items:center; }
.ex-guar[aria-pressed="true"]{ background:var(--ink); color:#fff; }
.ex-guar[aria-pressed="true"] em{ background:#fff; color:var(--ink); }
.ex-guar[aria-pressed="true"] svg{ fill:currentColor; }
.ex-cta{ box-shadow:inset 0 0 0 1px var(--line); margin-left:6px; }
.ex-cta:hover{ box-shadow:inset 0 0 0 1px var(--ink); background:#fff; }

/* Buscador */
.ex-bus{ position:relative; display:grid; grid-template-columns:minmax(220px,1.35fr) minmax(150px,1fr) minmax(140px,1fr) auto; align-items:center;
  width:min(760px, 100%); height:64px; border:1px solid var(--line); border-radius:32px; background:#fff;
  box-shadow:0 1px 2px rgba(0,0,0,.06), 0 4px 12px rgba(0,0,0,.05); transition:background .15s; }
.ex-bus.act{ background:var(--bg2); border-color:var(--bg2); }
.ex-seg{ position:relative; height:100%; min-width:0; padding:0 24px; border-radius:32px; display:flex; flex-direction:column; justify-content:center;
  text-align:left; cursor:pointer; transition:background .15s, box-shadow .15s; }
.ex-seg + .ex-seg::before{ content:''; position:absolute; left:0; top:18px; bottom:18px; width:1px; background:var(--line); }
.ex-seg:hover{ background:var(--bg2); }
.ex-bus.act .ex-seg:hover{ background:#e6e6e6; }
.ex-seg.on, .ex-bus.act .ex-seg.on:hover{ background:#fff; box-shadow:0 4px 18px rgba(0,0,0,.12); }
.ex-seg.on::before, .ex-seg.on + .ex-seg::before, .ex-seg:hover::before, .ex-seg:hover + .ex-seg::before{ opacity:0; }
.ex-seg label, .ex-l{ font-size:12.5px; font-weight:600; color:var(--ink); cursor:pointer; }
.ex-seg input{ width:100%; border:0; outline:0; background:transparent; padding:0; margin-top:1px; font-size:14.5px; color:var(--ink); text-overflow:ellipsis; }
.ex-seg input::placeholder{ color:var(--mut); }
.ex-seg input::-webkit-search-cancel-button{ display:none; }
.ex-v{ font-size:14.5px; color:var(--mut); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:1px; }
.ex-v.ok{ color:var(--ink); }
.ex-seg-q{ padding-right:44px; }
.ex-x{ position:absolute; right:14px; top:50%; transform:translateY(-50%); width:24px; height:24px; border-radius:50%; background:#e6e6e6; display:grid; place-items:center; }
.ex-x:hover{ background:#d9d9d9; }
.ex-go{ width:48px; height:48px; margin:0 8px; border-radius:50%; background:var(--rb); color:#fff; display:grid; place-items:center; transition:background .15s; }
.ex-go:hover{ background:var(--rbd); }

.ex-mbus{ display:none; }

/* Ventanas del buscador */
.ex-pop{ position:absolute; top:calc(100% + 12px); left:0; z-index:5; background:#fff; border-radius:28px; box-shadow:var(--sh-pop); padding:24px;
  max-height:calc(100vh - 110px); overflow:auto; animation:exIn .16s ease-out; }
.ex-pop.p-q{ width:420px; padding:16px 12px; }
.ex-pop.p-f{ left:50%; transform:translateX(-50%); width:760px; padding:28px 32px 20px; }
.ex-pop.p-g{ left:auto; right:0; width:400px; padding:12px 32px; }
@keyframes exIn{ from{ opacity:0; margin-top:-6px; } to{ opacity:1; margin-top:0; } }
@media (prefers-reduced-motion: reduce){ .ex-pop, .ex-dlg{ animation:none !important; } }

/* Destinos */
.ds-t{ margin:8px 16px 8px; font-size:12.5px; font-weight:600; color:var(--mut); }
.ds-r{ width:100%; display:flex; align-items:center; gap:14px; padding:8px 16px; border-radius:14px; text-align:left; }
.ds-r:hover, .ds-r.on{ background:var(--hover); }
.ds-i{ width:44px; height:44px; border-radius:10px; background:var(--bg2); display:grid; place-items:center; color:var(--ink); flex:none; overflow:hidden; }
.ds-i img{ width:100%; height:100%; object-fit:cover; }
.ds-n{ display:block; font-size:15px; }
.ds-n mark{ background:none; color:inherit; font-weight:600; }
.ds-s{ display:block; font-size:13px; color:var(--mut); }
.ds-vacio{ padding:16px; color:var(--mut); font-size:14px; }

/* Calendario */
.cal-top{ display:flex; justify-content:center; gap:8px; margin-bottom:18px; flex-wrap:wrap; }
.cal-q{ height:36px; padding:0 14px; border-radius:18px; border:1px solid var(--line); font-size:13.5px; font-weight:500; }
.cal-q:hover{ border-color:var(--ink); }
.cal-q.on{ border-color:var(--ink); background:var(--ink); color:#fff; }
.cal-w{ position:relative; }
.cal-nav{ position:absolute; top:-4px; width:32px; height:32px; border-radius:50%; display:grid; place-items:center; z-index:1; }
.cal-nav:hover:not(:disabled){ background:var(--bg2); }
.cal-nav:disabled{ opacity:.25; cursor:default; }
.cal-nav.l{ left:0; } .cal-nav.r{ right:0; }
.cal-ms{ display:grid; grid-template-columns:1fr 1fr; gap:48px; }
.cal-m h3{ margin:0 0 14px; text-align:center; font-size:15px; font-weight:600; }
.cal-g{ display:grid; grid-template-columns:repeat(7,1fr); }
.cal-dw{ height:28px; display:grid; place-items:center; font-size:12px; font-weight:600; color:var(--mut); }
.cal-d{ position:relative; height:46px; display:grid; place-items:center; font-size:14px; font-weight:500; }
.cal-d span{ position:relative; z-index:1; width:44px; height:44px; border-radius:50%; display:grid; place-items:center; border:1.5px solid transparent; }
.cal-d:not(:disabled):hover span{ border-color:var(--ink); }
.cal-d:disabled{ color:#c4c4c4; cursor:default; text-decoration:line-through; text-decoration-color:#d9d9d9; }
.cal-d.hoy span{ box-shadow:inset 0 0 0 1px var(--line); }
.cal-d.rg::before{ content:''; position:absolute; inset:1px 0; background:var(--bg2); }
.cal-d.ini::before{ left:50%; } .cal-d.fin::before{ right:50%; }
.cal-d.ini.fin::before{ display:none; }
.cal-d.ini span, .cal-d.fin span{ background:var(--ink); color:#fff; border-color:var(--ink); }
.cal-f{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:16px; padding-top:14px; border-top:1px solid var(--soft); font-size:14px; }
.cal-f b{ font-weight:600; }
.cal-f small{ color:var(--mut); font-size:13px; display:block; }

/* Huéspedes */
.gs-r{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 0; }
.gs-r + .gs-r{ border-top:1px solid var(--soft); }
.gs-n{ font-size:15.5px; font-weight:600; }
.gs-s{ font-size:13.5px; color:var(--mut); }
.gs-c{ display:flex; align-items:center; gap:14px; }
.gs-c output{ min-width:18px; text-align:center; font-variant-numeric:tabular-nums; font-size:15px; }
.gs-b{ width:34px; height:34px; border-radius:50%; border:1px solid #b0b0b0; color:var(--mut); display:grid; place-items:center; }
.gs-b:hover:not(:disabled){ border-color:var(--ink); color:var(--ink); }
.gs-b:disabled{ opacity:.3; cursor:not-allowed; }
.gs-nota{ font-size:13px; color:var(--mut); padding:4px 0 14px; }

/* Categorías */
.ex-cats-w{ border-bottom:1px solid var(--soft); }
.ex-cats-in{ position:relative; max-width:1880px; margin:0 auto; padding:0 40px; display:flex; align-items:center; gap:20px; height:74px; }
.ex-cats-box{ position:relative; flex:1; min-width:0; height:100%; }
.ex-cats{ display:flex; gap:32px; overflow-x:auto; scrollbar-width:none; scroll-behavior:smooth; height:100%; }
.ex-cats::-webkit-scrollbar{ display:none; }
.ex-cat{ flex:none; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; color:var(--mut); padding-top:4px;
  border-bottom:2px solid transparent; transition:color .12s, border-color .12s; }
.ex-cat span{ font-size:12.5px; font-weight:600; white-space:nowrap; }
.ex-cat:hover{ color:var(--ink); border-bottom-color:var(--line); }
.ex-cat.on{ color:var(--ink); border-bottom-color:var(--ink); }
.ex-cnav{ position:absolute; top:50%; transform:translateY(-50%); z-index:2; width:30px; height:30px; border-radius:50%; background:#fff;
  border:1px solid var(--line); display:grid; place-items:center; box-shadow:0 0 0 8px #fff; }
.ex-cnav:hover{ box-shadow:0 0 0 8px #fff, 0 2px 6px rgba(0,0,0,.15); }
.ex-cnav-l{ left:0; }
.ex-cnav-r{ right:0; }
.ex-fbtn{ flex:none; height:48px; padding:0 16px; border-radius:12px; border:1px solid var(--line); display:inline-flex; align-items:center; gap:8px;
  font-size:13.5px; font-weight:600; }
.ex-fbtn:hover{ border-color:var(--ink); background:var(--hover); }
.ex-fbtn.on{ border-color:var(--ink); box-shadow:inset 0 0 0 1px var(--ink); }

/* =================== Resultados =================== */
.ex-main{ max-width:1880px; margin:0 auto; display:grid; grid-template-columns:minmax(0,1fr) minmax(380px,38%); min-height:calc(100vh - var(--hh)); }
body.ex-sinmapa .ex-main{ grid-template-columns:minmax(0,1fr); }
body.ex-sinmapa .ex-map{ display:none; }
.ex-list{ padding:28px 32px 64px 40px; min-width:0; }
body.ex-sinmapa .ex-list{ padding-right:40px; }
.ex-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.ex-head h1{ margin:0; font-size:22px; font-weight:600; letter-spacing:-.01em; line-height:1.25; }
.ex-head p{ margin:4px 0 0; font-size:14.5px; color:var(--mut); }
.ex-head-acts{ display:flex; align-items:center; gap:8px; }
.ex-mini{ height:38px; padding:0 14px; border-radius:19px; border:1px solid var(--line); display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; white-space:nowrap; }
.ex-mini:hover{ border-color:var(--ink); }
.ex-ord-w{ position:relative; }
.ex-menu{ position:absolute; right:0; top:calc(100% + 8px); z-index:50; min-width:230px; background:#fff; border-radius:14px; box-shadow:var(--sh-pop); padding:8px; }
.ex-menu button{ width:100%; height:42px; padding:0 14px; border-radius:8px; display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:14.5px; text-align:left; }
.ex-menu button:hover{ background:var(--hover); }
.ex-menu button[aria-selected="true"]{ font-weight:600; }

.ex-chips{ display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.ex-chip{ height:34px; padding:0 8px 0 14px; border-radius:17px; border:1px solid var(--line); display:inline-flex; align-items:center; gap:6px; font-size:13.5px; font-weight:500; }
.ex-chip:hover{ border-color:var(--ink); }
.ex-chip svg{ color:var(--mut); }
.ex-chip-clr{ height:34px; padding:0 8px; font-size:13.5px; font-weight:600; text-decoration:underline; text-underline-offset:3px; }

.ex-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(250px,1fr)); gap:36px 22px; margin-top:24px; }
body.ex-sinmapa .ex-grid{ grid-template-columns:repeat(auto-fill, minmax(280px,1fr)); gap:40px 24px; }

/* Tarjeta */
.cd{ position:relative; min-width:0; }
.cd-ph{ position:relative; aspect-ratio:20/19; border-radius:14px; overflow:hidden; background:var(--bg2); isolation:isolate; }
.cd-tr{ display:flex; height:100%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; overscroll-behavior-x:contain; }
.cd-tr::-webkit-scrollbar{ display:none; }
.cd-sl{ flex:0 0 100%; height:100%; scroll-snap-align:start; scroll-snap-stop:always; display:block; }
.cd-sl img{ width:100%; height:100%; object-fit:cover; transition:opacity .2s; }
.cd-sl img:not([src]){ opacity:0; }
.cd-nofoto{ width:100%; height:100%; display:grid; place-items:center; color:#c4c4c4; }
.cd-ar{ position:absolute; top:50%; z-index:2; width:32px; height:32px; margin-top:-16px; border-radius:50%; background:rgba(255,255,255,.92);
  display:grid; place-items:center; box-shadow:0 1px 3px rgba(0,0,0,.2); opacity:0; transition:opacity .15s, transform .15s; }
.cd-ar:hover{ background:#fff; transform:scale(1.06); }
.cd-ar.l{ left:10px; } .cd-ar.r{ right:10px; }
.cd:hover .cd-ar:not([disabled]), .cd-ar:focus-visible{ opacity:1; }
.cd-ar[disabled]{ display:none; }
.cd-dots{ position:absolute; left:50%; bottom:10px; transform:translateX(-50%); z-index:2; display:flex; gap:5px; pointer-events:none; }
.cd-dots i{ width:6px; height:6px; border-radius:50%; background:#fff; opacity:.55; transition:opacity .15s, transform .15s; }
.cd-dots i.on{ opacity:1; transform:scale(1.15); }
.cd-fav{ position:absolute; top:6px; right:6px; z-index:3; width:40px; height:40px; display:grid; place-items:center; }
.cd-fav svg{ fill:rgba(0,0,0,.4); stroke:#fff; stroke-width:2; transition:transform .15s; }
.cd-fav:hover svg{ transform:scale(1.08); }
.cd-fav[aria-pressed="true"] svg{ fill:var(--heart); }
.cd-fav.pop svg{ animation:exLate .35s ease-out; }
@keyframes exLate{ 40%{ transform:scale(1.25); } }
.cd-bd{ position:absolute; top:12px; left:12px; z-index:2; height:28px; padding:0 10px; border-radius:14px; background:#fff; display:inline-flex; align-items:center; gap:5px;
  font-size:12.5px; font-weight:600; box-shadow:0 1px 3px rgba(0,0,0,.18); }
.cd-bd svg{ color:var(--rb); }
.cd-tx{ display:block; padding-top:12px; }
.cd-t1{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.cd-n{ font-size:15px; font-weight:600; line-height:1.3; overflow:hidden; display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; }
.cd-op{ flex:none; display:inline-flex; align-items:center; gap:4px; font-size:14px; }
.cd-op small{ color:var(--mut); font-size:13.5px; }
.cd-l, .cd-c{ font-size:14.5px; color:var(--mut); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-pr{ margin-top:6px; font-size:14.5px; display:flex; align-items:baseline; gap:5px; flex-wrap:wrap; }
.cd-pr b{ font-weight:600; font-size:15.5px; }
.cd-pr .m{ color:var(--mut); }
.cd-pr .t{ color:var(--mut); font-size:13.5px; }
.cd-pr .ko{ color:var(--alert); font-weight:500; }
.cd-pr .sk{ display:inline-block; width:110px; height:16px; border-radius:6px; background:linear-gradient(90deg,#f0f0f0 25%,#e4e4e4 50%,#f0f0f0 75%); background-size:200% 100%; animation:exSk 1.1s linear infinite; }
@keyframes exSk{ to{ background-position:-200% 0; } }
.cd-md{ font-size:13px; color:var(--mut); display:flex; align-items:center; gap:5px; margin-top:2px; }
.cd-md svg{ color:var(--rb); }
.cd.off .cd-ph{ filter:grayscale(.7); opacity:.7; }
.cd.hl .cd-ph{ box-shadow:0 0 0 2px var(--ink); }

/* Vacío y ocupados */
.ex-vacio{ max-width:520px; margin:48px 0; }
.ex-vacio h2{ margin:0; font-size:20px; font-weight:600; }
.ex-vacio p{ margin:6px 0 18px; color:var(--mut); }
.ex-vacio .acc{ display:flex; flex-wrap:wrap; gap:8px; }
.ex-ocup{ margin-top:40px; padding-top:24px; border-top:1px solid var(--soft); display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.ex-ocup p{ margin:0; color:var(--mut); }
.ex-ocup b{ color:var(--ink); font-weight:600; }
.ex-mas{ display:flex; justify-content:center; margin-top:48px; }

/* Botones */
.ex-btn{ height:48px; padding:0 24px; border-radius:8px; background:var(--rb); color:#fff; font-size:15.5px; font-weight:600; display:inline-flex; align-items:center; justify-content:center; gap:8px; transition:background .15s; }
.ex-btn:hover{ background:var(--rbd); }
.ex-btn-o{ height:46px; padding:0 22px; border-radius:8px; border:1px solid var(--ink); font-size:15px; font-weight:600; background:#fff; }
.ex-btn-o:hover{ background:var(--hover); }
.ex-lnk-u{ height:44px; padding:0 8px; margin-left:-8px; font-size:15px; font-weight:600; text-decoration:underline; text-underline-offset:3px; border-radius:8px; }
.ex-lnk-u:hover{ background:var(--hover); }
.ex-lnk-u:disabled{ color:#b0b0b0; cursor:default; background:none; }
.ex-ib{ width:34px; height:34px; border-radius:50%; display:grid; place-items:center; }
.ex-ib:hover{ background:var(--hover); }

/* =================== Mapa =================== */
.ex-map{ position:sticky; top:var(--hh); height:calc(100vh - var(--hh)); padding:20px 40px 20px 0; }
.ex-map-c{ position:absolute; inset:20px 40px 20px 0; border-radius:16px; overflow:hidden; background:#eef0ec; z-index:0; }
.ex-map-mv{ position:absolute; top:36px; left:calc(50% - 20px); transform:translateX(-50%); z-index:400; height:40px; padding:0 16px 0 12px; border-radius:20px; background:#fff;
  box-shadow:0 2px 10px rgba(0,0,0,.16); display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; cursor:pointer; white-space:nowrap; }
.ex-map-mv input{ width:18px; height:18px; accent-color:var(--rb); margin:0; cursor:pointer; }
.ex-map-sin{ position:absolute; left:calc(50% - 20px); transform:translateX(-50%); bottom:36px; z-index:400; margin:0; height:32px; padding:0 14px; border-radius:16px; background:rgba(255,255,255,.95);
  box-shadow:0 1px 6px rgba(0,0,0,.14); font-size:12.5px; color:var(--mut); display:flex; align-items:center; white-space:nowrap; }

.leaflet-container{ font-family:inherit; }
.ex-map-c .leaflet-tile-pane{ filter:saturate(.7) brightness(1.04); }   /* mapa más suave para que destaquen los precios */
.leaflet-control-zoom{ border:0 !important; box-shadow:0 2px 10px rgba(0,0,0,.16) !important; border-radius:10px !important; overflow:hidden; }
.leaflet-control-zoom a{ width:38px !important; height:38px !important; line-height:38px !important; color:var(--ink) !important; font-size:18px !important; border-color:var(--soft) !important; }
.leaflet-control-attribution{ font-size:10.5px !important; background:rgba(255,255,255,.8) !important; border-top-left-radius:6px; }
.ex-pinw{ background:none !important; border:0 !important; }
.ex-pin{ position:absolute; left:0; top:0; transform:translate(-50%,-50%); height:30px; padding:0 11px; border-radius:15px; background:#fff; color:var(--ink);
  display:inline-flex; align-items:center; gap:4px; white-space:nowrap; font-size:13.5px; font-weight:600; font-variant-numeric:tabular-nums;
  box-shadow:0 0 0 1px rgba(0,0,0,.08), 0 2px 5px rgba(0,0,0,.2); transition:transform .12s, background .12s, color .12s; cursor:pointer; }
.ex-pin.np{ width:32px; padding:0; justify-content:center; }
.ex-pin.v{ background:#f1f1f1; color:var(--mut); }
.ex-pin:hover, .ex-pin.on{ background:var(--ink); color:#fff; transform:translate(-50%,-50%) scale(1.08); }
.ex-clu{ position:absolute; left:0; top:0; transform:translate(-50%,-50%); min-width:38px; height:38px; padding:0 8px; border-radius:19px; background:var(--ink); color:#fff;
  display:grid; place-items:center; font-size:13.5px; font-weight:600; box-shadow:0 0 0 4px rgba(34,34,34,.15), 0 2px 6px rgba(0,0,0,.25); }
.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow{ transition:transform .3s ease-out, opacity .3s ease-in; }
.ex-clu:hover{ transform:translate(-50%,-50%) scale(1.06); }

.leaflet-popup.ex-popup .leaflet-popup-content-wrapper{ padding:0; border-radius:14px; overflow:hidden; box-shadow:0 8px 28px rgba(0,0,0,.22); }
.leaflet-popup.ex-popup .leaflet-popup-content{ margin:0; width:270px !important; font-size:14px; line-height:1.4; }
.leaflet-popup.ex-popup .leaflet-popup-tip-container{ display:none; }
.leaflet-popup.ex-popup a.leaflet-popup-close-button{ top:8px; right:8px; width:28px; height:28px; border-radius:50%; background:#fff; color:var(--ink); font:500 18px/26px Figtree,sans-serif; box-shadow:0 1px 3px rgba(0,0,0,.2); z-index:3; }
.pp a{ display:block; color:inherit; }
.pp-ph{ aspect-ratio:16/10; background:var(--bg2); }
.pp-ph img{ width:100%; height:100%; object-fit:cover; }
.pp-tx{ padding:12px 14px 14px; }
.pp-n{ font-weight:600; font-size:14.5px; display:flex; justify-content:space-between; gap:8px; }
.pp-l{ color:var(--mut); font-size:13.5px; }
.pp-p{ margin-top:4px; }
.pp-p b{ font-weight:600; }

.ex-mcard{ position:absolute; left:12px; right:12px; bottom:84px; z-index:500; }
.ex-mcard a{ display:flex; background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 6px 24px rgba(0,0,0,.22); min-height:112px; }
.ex-mcard .mi{ width:120px; flex:none; background:var(--bg2); }
.ex-mcard .mi img{ width:100%; height:100%; object-fit:cover; }
.ex-mcard .mt{ padding:12px 14px; min-width:0; font-size:14px; }
.ex-mcard .mt b{ font-weight:600; }
.ex-mcard .mx{ position:absolute; top:8px; right:8px; width:28px; height:28px; border-radius:50%; background:#fff; display:grid; place-items:center; box-shadow:0 1px 3px rgba(0,0,0,.2); }

.ex-fab{ display:none; }

/* =================== Ventanas (filtros, buscador móvil) =================== */
.ex-capa{ position:fixed; inset:0; z-index:900; background:rgba(0,0,0,.45); animation:exFade .15s ease-out; }
@keyframes exFade{ from{ opacity:0; } }
.ex-dlg{ position:fixed; z-index:901; left:50%; top:50%; transform:translate(-50%,-50%); width:min(780px, calc(100vw - 32px)); max-height:min(860px, calc(100vh - 64px));
  background:#fff; border-radius:16px; display:flex; flex-direction:column; box-shadow:0 12px 48px rgba(0,0,0,.25); animation:exUp .2s ease-out; }
@keyframes exUp{ from{ opacity:0; transform:translate(-50%,-46%); } }
.ex-dlg-h{ height:64px; flex:none; display:grid; grid-template-columns:40px 1fr 40px; align-items:center; padding:0 16px; border-bottom:1px solid var(--soft); }
.ex-dlg-h h2{ margin:0; text-align:center; font-size:16px; font-weight:600; }
.ex-dlg-b{ flex:1; overflow:auto; padding:8px 32px; overscroll-behavior:contain; }
.ex-dlg-f{ flex:none; height:76px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:0 24px 0 32px; border-top:1px solid var(--soft); }

.fs{ padding:28px 0; }
.fs + .fs{ border-top:1px solid var(--soft); }
.fs h3{ margin:0; font-size:20px; font-weight:600; letter-spacing:-.01em; }
.fs > p{ margin:4px 0 0; color:var(--mut); font-size:14px; }
.fs h4{ margin:22px 0 12px; font-size:15px; font-weight:600; }
.fs h3 + h4{ margin-top:16px; }

.hist{ position:relative; margin:28px 12px 0; }
.hist-b{ display:flex; align-items:flex-end; gap:2px; height:64px; }
.hist-b i{ flex:1; background:var(--line); border-radius:2px 2px 0 0; min-height:2px; }
.hist-b i.in{ background:var(--ink); }
.hist-r{ position:relative; height:28px; margin-top:-14px; }
.hist-r::before{ content:''; position:absolute; left:0; right:0; top:13px; height:2px; background:var(--line); }
.hist-r .act{ position:absolute; top:13px; height:2px; background:var(--ink); }
.hist-r input{ position:absolute; inset:0; width:100%; margin:0; background:none; pointer-events:none; -webkit-appearance:none; appearance:none; height:28px; }
.hist-r input::-webkit-slider-thumb{ -webkit-appearance:none; pointer-events:auto; width:28px; height:28px; border-radius:50%; background:#fff; border:1px solid #b0b0b0; box-shadow:0 2px 4px rgba(0,0,0,.15); cursor:grab; }
.hist-r input::-moz-range-thumb{ pointer-events:auto; width:26px; height:26px; border-radius:50%; background:#fff; border:1px solid #b0b0b0; box-shadow:0 2px 4px rgba(0,0,0,.15); cursor:grab; }
.hist-r input::-moz-range-track{ background:none; }
.hist-v{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px; margin-top:22px; }
.hist-v label{ display:block; border:1px solid #b0b0b0; border-radius:12px; padding:8px 14px; }
.hist-v label small{ display:block; font-size:12px; color:var(--mut); }
.hist-v label input{ border:0; outline:0; padding:0; width:100%; font-size:16px; }
.hist-v span{ color:var(--mut); }

.seg3{ display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); border-radius:12px; padding:4px; margin-top:18px; }
.seg3 button{ height:48px; border-radius:9px; font-size:14.5px; font-weight:500; }
.seg3 button:hover{ background:var(--hover); }
.seg3 button.on{ background:var(--ink); color:#fff; font-weight:600; }

.pills{ display:flex; gap:8px; flex-wrap:wrap; }
.pills button{ height:40px; min-width:58px; padding:0 18px; border-radius:20px; border:1px solid var(--line); font-size:14px; font-weight:500; }
.pills button:hover{ border-color:var(--ink); }
.pills button.on{ background:var(--ink); border-color:var(--ink); color:#fff; }

.tg{ display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:16px; cursor:pointer; }
.tg b{ display:block; font-size:15.5px; font-weight:500; }
.tg small{ display:block; color:var(--mut); font-size:13.5px; }
.tg input{ position:absolute; opacity:0; pointer-events:none; }
.tg i{ flex:none; position:relative; width:48px; height:32px; border-radius:16px; background:#b0b0b0; transition:background .15s; }
.tg i::after{ content:''; position:absolute; left:2px; top:2px; width:28px; height:28px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.2); transition:transform .15s; }
.tg input:checked + i{ background:var(--ink); }
.tg input:checked + i::after{ transform:translateX(16px); }
.tg input:focus-visible + i{ outline:2px solid var(--ink); outline-offset:2px; }

.sv{ display:grid; grid-template-columns:1fr 1fr; gap:4px 24px; }
.sv label{ display:flex; align-items:center; gap:12px; min-height:48px; cursor:pointer; font-size:15px; }
.sv label svg{ color:var(--ink); }
.sv label small{ color:var(--mut); font-size:13px; margin-left:auto; }
.sv input{ width:22px; height:22px; margin:0; accent-color:var(--ink); flex:none; cursor:pointer; }
.sv-mas{ margin-top:12px; font-weight:600; text-decoration:underline; text-underline-offset:3px; font-size:15px; }

/* Buscador móvil (ventana) */
.ms-s{ border:1px solid var(--soft); border-radius:16px; margin:12px 0; box-shadow:0 2px 10px rgba(0,0,0,.05); overflow:hidden; }
.ms-h{ width:100%; height:60px; padding:0 20px; display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:14.5px; }
.ms-h span{ color:var(--mut); }
.ms-h b{ font-weight:600; text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ms-s.on .ms-h{ display:none; }
.ms-b{ padding:20px; display:none; }
.ms-s.on .ms-b{ display:block; }
.ms-b h3{ margin:0 0 14px; font-size:22px; font-weight:600; letter-spacing:-.01em; }
.ms-in{ display:flex; align-items:center; gap:10px; height:56px; padding:0 16px; border:1px solid #b0b0b0; border-radius:12px; }
.ms-in input{ flex:1; border:0; outline:0; font-size:16px; min-width:0; background:none; }
.ms-b .ds-r{ padding:8px 4px; }
.ms-cal{ max-height:52vh; overflow:auto; margin:0 -8px; padding:0 8px; }
.ms-cal .cal-ms{ grid-template-columns:1fr; gap:24px; }

.ex-toast{ position:fixed; left:50%; bottom:28px; transform:translateX(-50%); z-index:1000; background:var(--ink); color:#fff; padding:12px 18px; border-radius:10px; font-size:14px; font-weight:500;
  box-shadow:0 6px 20px rgba(0,0,0,.25); animation:exFade .15s ease-out; }

/* =================== Pie =================== */
.ex-pie{ border-top:1px solid var(--soft); background:var(--hover); color:var(--mut); font-size:14px; }
.ex-pie-in{ max-width:1880px; margin:0 auto; padding:44px 40px 24px; display:grid; grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr)); gap:32px; }
.ex-pie-m img{ height:28px; width:auto; }
.ex-pie-m p{ margin:12px 0 0; max-width:26em; }
.ex-pie h2{ margin:0 0 10px; font-size:14px; font-weight:600; color:var(--ink); }
.ex-pie nav{ display:flex; flex-direction:column; gap:8px; }
.ex-pie a:hover{ color:var(--ink); text-decoration:underline; }
.ex-pie-b{ max-width:1880px; margin:0 auto; padding:18px 40px 28px; border-top:1px solid var(--soft); font-size:13px; }
.ex-nojs{ columns:3; font-size:14px; }

/* =================== Pantallas medianas =================== */
@media (max-width:1280px){
  .ex-top-in{ grid-template-columns:auto 1fr auto; }
  .ex-bus{ justify-self:center; }
  .ex-prop{ display:none; }
}
@media (max-width:1127px){
  .ex-main{ grid-template-columns:minmax(0,1fr) minmax(340px,44%); }
  .ex-guar span{ display:none; }
}

/* =================== Móvil y tableta =================== */
@media (max-width:899px){
  body{ font-size:15px; }
  .ex-top-in{ height:72px; padding:0 16px; grid-template-columns:1fr auto; gap:10px; }
  .ex-logo, .ex-bus, .ex-prop, .ex-cta{ display:none; }
  .ex-mbus{ display:flex; align-items:center; gap:14px; min-width:0; height:54px; padding:0 20px; border-radius:27px; border:1px solid var(--soft);
    box-shadow:0 2px 10px rgba(0,0,0,.09); text-align:left; }
  .ex-mbus span{ min-width:0; display:flex; flex-direction:column; }
  .ex-mbus b{ font-size:14.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ex-mbus small{ font-size:12.5px; color:var(--mut); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ex-guar{ width:48px; height:48px; padding:0; justify-content:center; border:1px solid var(--soft); border-radius:50%; position:relative; }
  .ex-guar em{ position:absolute; top:-2px; right:-2px; }
  .ex-cats-in{ padding:0 16px; height:66px; gap:14px; }
  .ex-cats{ gap:24px; }
  .ex-cnav{ display:none !important; }
  .ex-fbtn{ width:44px; height:44px; padding:0; justify-content:center; border-radius:50%; position:relative; }
  .ex-fbtn span{ display:none; }
  .ex-fbtn em{ position:absolute; top:-4px; right:-4px; }

  .ex-main, body.ex-sinmapa .ex-main{ grid-template-columns:minmax(0,1fr); }
  .ex-list, body.ex-sinmapa .ex-list{ padding:20px 16px 96px; }
  .ex-head h1{ font-size:19px; }
  .ex-head p{ font-size:13.5px; }
  .ex-head-acts{ width:100%; }
  .ex-mapt{ display:none; }
  .ex-mini{ height:36px; }
  .ex-grid, body.ex-sinmapa .ex-grid{ grid-template-columns:repeat(auto-fill, minmax(min(100%, 300px),1fr)); gap:32px 20px; margin-top:20px; }
  .cd-ph{ aspect-ratio:1/0.92; }
  .cd-ar{ display:none; }

  .ex-map, body.ex-sinmapa .ex-map{ display:none; }
  body.ex-vmapa .ex-map{ display:block; position:fixed; left:0; right:0; bottom:0; top:var(--hh); height:auto; padding:0; z-index:300; }
  body.ex-vmapa .ex-map-c{ inset:0; border-radius:0; }
  body.ex-vmapa .ex-list, body.ex-vmapa .ex-pie{ display:none; }
  .ex-map-mv{ top:12px; left:50%; }
  .ex-map-sin{ left:50%; bottom:auto; top:60px; }

  .ex-fab{ display:inline-flex; position:fixed; left:50%; bottom:calc(24px + env(safe-area-inset-bottom)); transform:translateX(-50%); z-index:600; height:48px; padding:0 20px;
    border-radius:24px; background:var(--ink); color:#fff; align-items:center; gap:8px; font-size:14.5px; font-weight:600; box-shadow:0 4px 16px rgba(0,0,0,.25); transition:transform .15s; }
  .ex-fab:active{ transform:translateX(-50%) scale(.97); }

  .ex-dlg{ left:0; right:0; top:auto; bottom:0; transform:none; width:100%; max-height:calc(100dvh - 24px); border-radius:16px 16px 0 0; animation:exSh .22s ease-out; }
  @keyframes exSh{ from{ transform:translateY(40px); opacity:.4; } }
  .ex-dlg-b{ padding:4px 20px; }
  .ex-dlg-f{ padding:0 20px calc(env(safe-area-inset-bottom)); height:calc(72px + env(safe-area-inset-bottom)); }
  .ex-msh{ top:0; max-height:none; border-radius:0; background:var(--hover); }
  .ex-msh .ex-dlg-h{ background:#fff; }
  .ex-msh .ex-dlg-f{ background:#fff; }
  .ms-s{ background:#fff; }
  .sv{ grid-template-columns:1fr; }
  .cal-d{ height:44px; }
  .cal-d span{ width:42px; height:42px; }

  .ex-pie-in{ grid-template-columns:1fr 1fr; padding:32px 16px 16px; }
  .ex-pie-m{ grid-column:1 / -1; }
  .ex-pie-b{ padding:16px 16px 96px; }
}
@media (max-width:380px){
  .ex-mini span{ display:none; }
  .ex-mini{ width:36px; padding:0; justify-content:center; }
  .ex-ord-w .ex-mini{ width:auto; padding:0 12px; }
  .ex-ord-w .ex-mini span{ display:inline; }
}
