/* TodosSantos.com · Homes for Sale — app de búsqueda (/homes-for-sale/)
   TOOLBAR → [ MAPA | RESULTADOS ]. Móvil: lista + FAB «Map». Tokens propios (tsm-). */
.tsm { --paper:#F4F0E8; --cream:#EAE4D8; --ink:#1D1C1A; --ink-2:#4A4843; --ink-3:#6B6862; --line:rgba(29,28,26,.18); --rule:rgba(29,28,26,.25);
  --ocean:#3F5A6B; --ocean-2:#2F4655; --sun:#C9B48A; --coral:#8C4A3C; --white:#FBF9F5; --r:4px; --ease:cubic-bezier(.2,.7,.2,1);
  --font:'Hanken Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif; --display:'Cormorant Garamond',Georgia,serif; color:var(--ink); font-family:var(--font); }
.tsm *, .tsm *::before, .tsm *::after { box-sizing:border-box; }
.tsm [hidden] { display:none !important; }
.tsm svg { width:1em; height:1em; flex:none; }
.tsm button { font-family:inherit; }
.tsm a { color:inherit; text-decoration:none; }
.tsm-btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; height:44px; padding:0 20px; border-radius:var(--r); border:1px solid var(--ink); font:500 12px var(--font); letter-spacing:.16em; text-transform:uppercase; cursor:pointer; transition:background .2s,border-color .2s,transform .1s; }
.tsm-btn--primary { background:var(--ink); color:var(--paper); border-color:var(--ink); }
.tsm-btn--primary:hover { background:var(--ocean); border-color:var(--ocean); color:#fff; }
.tsm-btn--ghost { background:transparent; border-color:var(--ink); color:var(--ink); }
.tsm-btn--ghost:hover { border-color:var(--ocean); }
.tsm-btn--wa { background:#25D366; color:#fff; width:100%; margin-bottom:12px; }
.tsm-btn:active { transform:translateY(1px); }
.tsm-sel { position:relative; display:inline-flex; align-items:center; }
.tsm-sel select { appearance:none; -webkit-appearance:none; height:40px; padding:0 30px 0 10px; border:0; background:transparent; font:500 13px var(--font); letter-spacing:.02em; text-transform:none; color:var(--ink); cursor:pointer; outline:0; box-shadow:none; width:100%; }
.tsm-sel > svg { position:absolute; right:8px; pointer-events:none; font-size:14px; color:var(--ink-2); }

/* ---------- Shell ---------- */
.tsm-app { --hdr:var(--tsm-hdr,0px); --tb:64px; --panel:clamp(560px,40vw,760px); position:relative; display:flex; flex-direction:column; width:calc(100vw - var(--tsm-sb,0px)); margin-left:calc(50% - 50vw + var(--tsm-sb,0px) / 2); min-height:520px; height:var(--tsm-shell,calc(100dvh - var(--hdr))); background:var(--paper); overflow:hidden; }
body.tsm-app-page { overflow-x:hidden; }
body.tsm-noscroll { overflow:hidden; }

/* ---------- Toolbar ---------- */
.tsm-toolbar { position:relative; z-index:30; display:grid; grid-template-columns:minmax(220px,360px) minmax(0,1fr) auto; align-items:center; gap:10px; min-height:var(--tb); padding:12px clamp(20px,4vw,40px); background:var(--paper); border-bottom:1px solid var(--rule); }
.tsm-search { position:relative; display:flex; align-items:center; gap:10px; height:44px; padding:0 12px 0 14px; background:var(--white); border:1px solid var(--line); border-radius:var(--r); transition:border-color .2s,background .2s; }
.tsm-search:focus-within { background:#fff; border-color:var(--ink); }
.tsm-search > svg { font-size:18px; color:var(--ink-2); }
.tsm-search input[type=text] { flex:1; min-width:0; height:100%; border:0; background:transparent; font:500 15px var(--font); color:var(--ink); outline:0; box-shadow:none; padding:0; }
.tsm-search input::placeholder { color:var(--ink-3); }
.tsm .tsm-search__clear { display:inline-flex; width:26px; height:26px; align-items:center; justify-content:center; border:0; border-radius:50%; background:rgba(23,35,43,.08); color:var(--ink-2); padding:0; cursor:pointer; font-size:12px; }
.tsm-suggest { position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:40; margin:0; padding:6px; list-style:none; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 24px 60px -24px rgba(12,26,38,.45); max-height:360px; overflow:auto; }
.tsm-suggest li { display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:10px; cursor:pointer; font-size:14px; }
.tsm-suggest li:hover, .tsm-suggest li[aria-selected=true] { background:var(--cream); }
.tsm-suggest li svg { font-size:16px; color:var(--ink-3); }
.tsm-suggest li b { font-weight:600; }
.tsm-suggest li small { color:var(--ink-3); font-size:12px; }
.tsm-suggest li em { margin-left:auto; font-style:normal; color:var(--ink-3); font-size:12px; }
.tsm-suggest li.tsm-suggest__h { padding:8px 12px 4px; font:700 11px var(--font); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); cursor:default; }
.tsm-suggest li.tsm-suggest__h:hover { background:none; }

.tsm-filters { display:flex; align-items:center; gap:8px; min-width:0; flex-wrap:wrap; }
.tsm .tsm-fbtn { display:inline-flex; align-items:center; gap:8px; height:44px; padding:0 16px; background:var(--white); border:1px solid var(--line); border-radius:var(--r); color:var(--ink); font:500 12px var(--font); letter-spacing:.14em; text-transform:uppercase; cursor:pointer; white-space:nowrap; transition:border-color .2s,background .2s; }
.tsm .tsm-fbtn:hover { border-color:var(--ink); }
.tsm .tsm-fbtn[aria-expanded=true] { border-color:var(--ink); background:var(--cream); }
.tsm .tsm-fbtn.is-active { background:var(--ink); border-color:var(--ink); color:var(--paper); }
.tsm-fbtn > svg { font-size:14px; opacity:.7; }
.tsm-fbtn[aria-expanded=true] > svg:last-child { transform:rotate(180deg); }
.tsm-fbtn span { max-width:180px; overflow:hidden; text-overflow:ellipsis; }
.tsm-fcount { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; padding:0 6px; border-radius:999px; background:var(--ocean); color:#fff; font:600 11px var(--font); letter-spacing:0; }
.tsm .tsm-fbtn--all { display:none; }
.tsm-sort { display:inline-flex; align-items:center; gap:8px; height:44px; padding:0 4px 0 14px; border:1px solid var(--line); border-radius:var(--r); background:var(--white); font:500 12px var(--font); letter-spacing:.14em; text-transform:uppercase; margin:0; }
.tsm-sort > svg { font-size:15px; opacity:.7; }
.tsm-sort__l { color:var(--ink-2); font-weight:500; }

/* ---------- Popovers ---------- */
.tsm-pops { position:absolute; top:100%; left:0; right:0; height:0; }
.tsm-pop { position:absolute; top:6px; left:var(--pop-x,18px); z-index:60; width:340px; max-width:calc(100vw - 32px); padding:18px 18px 0; background:var(--white); border:1px solid var(--ink); border-radius:var(--r); box-shadow:0 30px 70px -28px rgba(29,28,26,.45); animation:tsmPop .18s var(--ease); }
.tsm-pop--wide { width:460px; }
@keyframes tsmPop { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } }
.tsm-pop__title { margin:0 0 12px; font:500 11px var(--font); letter-spacing:.22em; text-transform:uppercase; color:var(--ink); display:flex; align-items:baseline; gap:8px; }
.tsm-pop__title + .tsm-pop__title, .tsm-seg + .tsm-pop__title, .tsm-pop__range + .tsm-pop__title, .tsm-pop__list + .tsm-pop__title { margin-top:18px; }
.tsm-pop__title small { color:var(--ink-3); font-weight:600; }
.tsm-pop__list { display:grid; grid-template-columns:1fr; gap:2px; max-height:320px; overflow:auto; margin:0 -6px; padding:0 6px; }
.tsm-pop__list--2 { grid-template-columns:1fr 1fr; }
.tsm-opt { display:flex; align-items:center; gap:10px; padding:8px; border-radius:10px; cursor:pointer; font:500 14px var(--font); user-select:none; position:relative; }
.tsm-opt:hover { background:var(--cream); }
.tsm-opt input { position:absolute; opacity:0; width:0; height:0; margin:0; }
.tsm-opt i { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; flex:none; border:1px solid var(--ink); border-radius:2px; color:transparent; font-size:13px; transition:background .15s,border-color .15s; }
.tsm-opt.is-on i, .tsm-opt input:checked + i { background:var(--ink); border-color:var(--ink); color:var(--paper); }
.tsm-opt input:focus-visible + i { outline:2px solid var(--sun); outline-offset:2px; }
.tsm-opt span { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tsm-opt small { color:var(--ink-3); }
.tsm-pop__range { display:grid; grid-template-columns:1fr auto 1fr; align-items:end; gap:10px; }
.tsm-pop__range label { display:flex; flex-direction:column; gap:6px; font:700 11px var(--font); letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); min-width:0; }
.tsm-pop__range .tsm-sel { width:100%; border:1.5px solid rgba(23,35,43,.16); border-radius:10px; background:#fff; }
.tsm-pop__range .tsm-sel select { height:42px; padding-left:12px; }
.tsm-pop__dash { padding-bottom:12px; color:var(--ink-3); }
.tsm-pop__hint { margin:10px 0 0; font-size:12.5px; color:var(--ink-3); }
.tsm-pop__foot { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:14px -18px 0; padding:12px 18px; border-top:1px solid var(--line); background:var(--paper); }
.tsm .tsm-pop__clear { background:none; border:0; padding:0; font:600 14px var(--font); color:var(--ink-2); cursor:pointer; text-decoration:underline; }
.tsm-seg { display:flex; gap:6px; }
.tsm-seg__o { flex:1; position:relative; }
.tsm-seg__o input { position:absolute; opacity:0; width:0; height:0; }
.tsm-seg__o span { display:flex; align-items:center; justify-content:center; height:40px; border:1px solid var(--line); border-radius:var(--r); font:500 13px var(--font); cursor:pointer; }
.tsm-seg__o.is-on span, .tsm-seg__o input:checked + span { background:var(--ink); border-color:var(--ink); color:var(--paper); }

/* ---------- Chips ---------- */
.tsm-chips { display:flex; align-items:center; gap:8px; padding:8px clamp(20px,4vw,40px); background:var(--paper); border-bottom:1px solid var(--line); overflow-x:auto; scrollbar-width:none; }
.tsm-chips:empty, .tsm-chips.is-empty { display:none; }
.tsm-chiplist { display:flex; gap:6px; }
.tsm .tsm-chip { display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 10px 0 12px; border-radius:var(--r); border:1px solid var(--ink); background:transparent; font:500 11px var(--font); letter-spacing:.12em; text-transform:uppercase; color:var(--ink); cursor:pointer; white-space:nowrap; }
.tsm .tsm-chip span { color:var(--ink-3); }

/* ---------- Split ---------- */
.tsm-split { position:relative; flex:1; min-height:0; display:grid; grid-template-columns:1fr var(--panel); }
.tsm-map { position:relative; background:#E8EEF0; overflow:hidden; user-select:none; -webkit-user-select:none; }
.tsm-map > .tsm-map__canvas, .tsm-map > .tsm-map__canvas.maplibregl-map { position:absolute !important; inset:0; width:100%; height:100%; }
.tsm-map[data-state=loading] .tsm-map__canvas { opacity:0; }
.tsm-map__ph { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--ink-3); font-size:14px; pointer-events:none; }
.tsm-map[data-state=ready] .tsm-map__ph { display:none; }
.tsm-map[data-state=placeholder] .tsm-map__ph span::after { content:' — map unavailable'; }
.tsm-map__top { position:absolute; top:12px; left:12px; right:12px; z-index:5; display:flex; align-items:center; gap:10px; pointer-events:none; }
.tsm-map__top > * { pointer-events:auto; }
.tsm-map__move { display:inline-flex; align-items:center; gap:8px; height:36px; padding:0 12px; background:var(--paper); border:1px solid var(--line); border-radius:var(--r); box-shadow:0 8px 24px -12px rgba(29,28,26,.4); font:500 12px var(--font); cursor:pointer; user-select:none; }
.tsm-map__move input { position:absolute; opacity:0; width:0; height:0; }
.tsm-map__move i { width:16px; height:16px; border:1px solid var(--ink); border-radius:2px; display:inline-block; position:relative; }
.tsm-map__move input:checked + i { background:var(--ink); border-color:var(--ink); }
.tsm-map__move input:checked + i::after { content:''; position:absolute; left:4px; top:1px; width:5px; height:9px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); }
.tsm .tsm-map__here { display:inline-flex; align-items:center; gap:6px; height:36px; padding:0 14px; background:var(--ink); color:var(--paper); border:0; border-radius:var(--r); font:500 11px var(--font); letter-spacing:.14em; text-transform:uppercase; cursor:pointer; box-shadow:0 8px 24px -12px rgba(12,26,38,.6); }
.tsm-map__n { margin-left:auto; height:36px; display:inline-flex; align-items:center; padding:0 12px; background:var(--paper); border:1px solid var(--line); border-radius:var(--r); font:500 11px var(--font); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-2); }
.tsm-map__warn { position:absolute; left:12px; right:12px; bottom:12px; z-index:5; margin:0; padding:8px 12px; background:#FFF4E0; border:1px solid #F0D3A0; border-radius:10px; font:500 12.5px var(--font); color:#6B4A0F; }
.tsm .tsm-map__close { display:none; }
.tsm-map .maplibregl-ctrl-bottom-left, .tsm-map .maplibregl-ctrl-bottom-right { z-index:4; }

/* Pins */
.tsm-pinwrap { will-change:transform; }
.tsm .tsm-pin { display:inline-flex; align-items:center; justify-content:center; height:28px; padding:0 10px; background:var(--paper); color:var(--ink); border:1px solid var(--ink); border-radius:999px; font:600 12px var(--font); letter-spacing:.01em; box-shadow:0 6px 16px -8px rgba(12,26,38,.5); cursor:pointer; transform:translateY(-4px); transition:background .15s,color .15s,border-color .15s,transform .15s; position:relative; }
.tsm .tsm-pin::after { content:''; position:absolute; left:50%; bottom:-5px; width:8px; height:8px; background:inherit; border-right:1px solid var(--ink); border-bottom:1px solid var(--ink); transform:translateX(-50%) rotate(45deg); }
.tsm .tsm-pin.is-hover, .tsm .tsm-pin:hover { background:var(--ink); color:#fff; border-color:var(--ink); z-index:2; transform:translateY(-6px) scale(1.05); }
.tsm .tsm-pin.is-selected { background:var(--ocean); color:#fff; border-color:var(--ocean); z-index:3; }
.tsm .tsm-pin.is-approx::before { content:''; position:absolute; inset:-6px; border-radius:999px; border:1.5px dashed rgba(14,94,111,.35); pointer-events:none; }
.tsm .tsm-pin--cluster { min-width:40px; height:40px; border-radius:50%; background:var(--ink); color:var(--paper); border-color:var(--paper); border-width:2px; font-size:13px; transform:none; box-shadow:0 0 0 6px rgba(29,28,26,.14),0 8px 20px -8px rgba(29,28,26,.6); }
.tsm .tsm-pin--cluster::after { display:none; }
.tsm .tsm-pin--cluster:hover { transform:scale(1.06); background:var(--ocean-2); }
.maplibregl-marker.tsm-z { z-index:5; }

/* Map popover */
.tsm-map__pop { position:absolute; left:12px; bottom:12px; z-index:6; width:300px; max-width:calc(100% - 24px); background:var(--white); border:1px solid var(--ink); border-radius:var(--r); box-shadow:0 30px 70px -28px rgba(12,26,38,.6); overflow:hidden; animation:tsmPop .18s var(--ease); }
.tsm .tsm-map__pop-x { position:absolute; top:8px; right:8px; z-index:2; width:28px; height:28px; border:0; border-radius:50%; background:rgba(23,35,43,.7); color:#fff; font-size:18px; line-height:1; cursor:pointer; }
.tsm-map__pop-img { position:relative; aspect-ratio:3/2; background:var(--cream); cursor:pointer; }
.tsm-map__pop-img img { width:100%; height:100%; object-fit:cover; display:block; }
.tsm-map__pop-img .tsm-ph { width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:var(--ink-3); font-size:34px; }
.tsm .tsm-map__pop-nav { position:absolute; top:50%; transform:translateY(-50%); width:30px; height:30px; border:0; border-radius:50%; background:rgba(255,255,255,.9); color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-size:14px; }
.tsm .tsm-map__pop-nav--prev { left:8px; } .tsm .tsm-map__pop-nav--next { right:8px; }
.tsm-map__pop-cnt { position:absolute; right:8px; bottom:8px; padding:2px 8px; border-radius:999px; background:rgba(23,35,43,.7); color:#fff; font:600 11px var(--font); }
.tsm-map__pop-b { padding:12px 14px 14px; display:flex; flex-direction:column; gap:3px; cursor:pointer; }
.tsm-map__pop-b b { font:600 17px var(--font); }
.tsm-map__pop-t { font:500 18px/1.15 var(--display); color:var(--ink); }
.tsm-map__pop-b span { font-size:12.5px; color:var(--ink-2); }
.tsm-map__pop-hint { color:var(--ocean) !important; font-weight:600; }

/* ---------- Panel ---------- */
.tsm-panel { position:relative; overflow-y:auto; overscroll-behavior:contain; background:var(--paper); border-left:1px solid var(--rule); scrollbar-width:thin; }
.tsm-panel__head { padding:18px 20px 8px; }
.tsm-panel__h1 { margin:0 0 6px; font:500 28px/1.1 var(--display); color:var(--ink); letter-spacing:.01em; }
.tsm-panel__count { margin:0; font:400 11px var(--font); letter-spacing:.2em; text-transform:uppercase; color:var(--ink-2); }
.tsm-panel__count b { color:var(--ink); font-weight:600; }
.tsm-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; padding:8px 20px 20px; }
.tsm-grid[aria-busy=true] { opacity:.6; }
.tsm-empty { grid-column:1/-1; text-align:center; padding:60px 20px; color:var(--ink-2); }
.tsm-empty svg { font-size:36px; color:var(--ink-3); }
.tsm-empty h2 { font:500 italic 26px var(--display); color:var(--ink); margin:12px 0 6px; }
.tsm-empty p { margin:0 0 16px; }
.tsm-pages { display:flex; flex-wrap:wrap; justify-content:center; gap:6px; padding:8px 20px 20px; }
.tsm-pages__p { display:inline-flex; align-items:center; justify-content:center; min-width:38px; height:38px; padding:0 10px; border-radius:var(--r); border:1px solid var(--line); background:var(--white); font:500 13px var(--font); }
.tsm-pages__p.is-on { background:var(--ink); border-color:var(--ink); color:var(--paper); }
.tsm-pages__dots { align-self:center; color:var(--ink-3); }
.tsm-panel__foot { padding:14px 20px 28px; border-top:1px solid var(--rule); font-size:12px; line-height:1.6; color:var(--ink-3); }
.tsm-panel__foot p { margin:0; }

/* ---------- Card ---------- */
.tsm-card { position:relative; display:flex; flex-direction:column; background:var(--white); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; transition:box-shadow .2s,transform .2s,border-color .2s; }
.tsm-card:hover, .tsm-card.is-hover { border-color:var(--ink); box-shadow:0 18px 40px -24px rgba(29,28,26,.4); transform:translateY(-2px); }
.tsm-card.is-selected { border-color:var(--ink); box-shadow:0 0 0 1px var(--ink),0 18px 40px -24px rgba(29,28,26,.4); }
.tsm-card__media { position:relative; display:block; aspect-ratio:3/2; background:var(--cream); overflow:hidden; }
.tsm-card__media img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s var(--ease); }
.tsm-card:hover .tsm-card__media img { transform:scale(1.04); }
.tsm-card__ph { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; color:var(--ink-3); font-size:34px; }
.tsm-card__ph small { font:600 12px var(--font); letter-spacing:.08em; text-transform:uppercase; }
.tsm-card__badges { position:absolute; top:10px; left:10px; display:flex; gap:6px; }
.tsm-badge { display:inline-flex; align-items:center; gap:4px; height:24px; padding:0 10px; border-radius:var(--r); font:500 10px var(--font); letter-spacing:.18em; text-transform:uppercase; background:var(--paper); color:var(--ink); border:1px solid var(--ink); }
.tsm-badge--new { background:var(--paper); }
.tsm-badge--drop { background:var(--ocean); border-color:var(--ocean); color:#fff; }
.tsm-badge--sold { background:var(--ink); color:var(--paper); }
.tsm-card__n { position:absolute; right:10px; bottom:10px; display:inline-flex; align-items:center; gap:4px; height:24px; padding:0 8px; border-radius:999px; background:rgba(23,35,43,.7); color:#fff; font:600 11.5px var(--font); }
.tsm-card__body { padding:12px 14px 14px; display:flex; flex-direction:column; gap:4px; }
.tsm-card__price { margin:0; font:600 18px var(--font); letter-spacing:-.01em; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.tsm-card__price s { color:var(--ink-3); font-weight:500; font-size:13px; }
.tsm-card__ask { font-weight:600; color:var(--ink-2); font-size:15px; }
.tsm-card__title { margin:0; font:500 19px/1.15 var(--display); }
.tsm-card__title a::after { content:''; position:absolute; inset:0; }
.tsm-card__loc { margin:0; display:flex; align-items:center; gap:5px; font-size:13px; color:var(--ink-2); flex-wrap:wrap; }
.tsm-card__loc svg { color:var(--ink-3); }
.tsm-card__type { display:inline-flex; align-items:center; height:20px; padding:0 8px; border-radius:var(--r); background:transparent; border:1px solid var(--line); color:var(--ink-2); font:500 9.5px var(--font); letter-spacing:.18em; text-transform:uppercase; margin-left:auto; }
.tsm-card__specs { list-style:none; margin:4px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:4px 12px; font-size:13px; color:var(--ink-2); }
.tsm-card__specs b { color:var(--ink); font-weight:600; }
.tsm-card.is-sold .tsm-card__media img { filter:grayscale(.6); }
.tsm-card--sk { min-height:280px; background:linear-gradient(90deg,#fff 25%,var(--cream) 50%,#fff 75%); background-size:200% 100%; animation:tsmSk 1.2s linear infinite; border-color:transparent; }
@keyframes tsmSk { to { background-position:-200% 0; } }

/* ---------- FAB + drawer (móvil) ---------- */
.tsm .tsm-fab { display:none; }
.tsm-drawer { position:fixed; inset:0 0 0 auto; width:min(420px,100vw); z-index:100000; background:var(--paper); transform:translateX(100%); transition:transform .28s var(--ease); display:flex; flex-direction:column; box-shadow:-20px 0 60px -30px rgba(12,26,38,.5); }
.tsm-drawer.is-open { transform:none; }
.tsm-drawer__head { display:flex; align-items:center; gap:12px; padding:16px 18px; border-bottom:1px solid var(--line); }
.tsm-drawer__head h2 { margin:0; font:500 26px var(--display); flex:1; }
.tsm .tsm-drawer__clear { background:none; border:0; font:600 14px var(--font); color:var(--ink-2); text-decoration:underline; cursor:pointer; }
.tsm .tsm-drawer__x { width:36px; height:36px; border:0; border-radius:50%; background:var(--cream); font-size:22px; cursor:pointer; }
.tsm-drawer__body { flex:1; overflow:auto; padding:6px 18px 18px; }
.tsm-drawer__body .tsm-pop { position:static; width:auto; max-width:none; box-shadow:none; border:0; border-bottom:1px solid var(--line); border-radius:0; padding:16px 0 0; animation:none; }
.tsm-drawer__body .tsm-pop__foot { display:none; }
.tsm-drawer__body .tsm-pop__list { max-height:none; }
.tsm-drawer__foot { padding:12px 18px calc(12px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); }
.tsm-drawer__foot .tsm-btn { width:100%; }
.tsm-veil { position:fixed; inset:0; z-index:99999; background:rgba(12,26,38,.45); }

/* ---------- Responsive ---------- */
@media (max-width:1180px) { .tsm-app { --panel:clamp(480px,46vw,620px); } .tsm-grid { grid-template-columns:1fr; } }
@media (max-width:899px) {
  .tsm-app { height:auto; min-height:0; overflow:visible; }
  .tsm-toolbar { grid-template-columns:1fr; gap:8px; padding:10px 14px; position:sticky; top:var(--hdr); }
  .tsm-filters, .tsm-sort { display:none; }
  .tsm-chips { display:flex; position:sticky; top:calc(var(--hdr) + 64px); z-index:25; }
  .tsm .tsm-fbtn--all { display:inline-flex; height:36px; }
  .tsm-split { display:block; }
  .tsm-panel { border-left:0; overflow:visible; }
  .tsm-grid { grid-template-columns:1fr; padding:8px 14px 90px; }
  .tsm-map { position:fixed; inset:0; z-index:99990; display:none; }
  .tsm-app.is-map .tsm-map { display:block; }
  .tsm .tsm-map__close { display:inline-flex; position:absolute; left:50%; bottom:calc(16px + env(safe-area-inset-bottom)); transform:translateX(-50%); z-index:7; align-items:center; gap:8px; height:44px; padding:0 20px; border:0; border-radius:var(--r); background:var(--ink); color:var(--paper); font:500 12px var(--font); letter-spacing:.18em; text-transform:uppercase; box-shadow:0 12px 30px -10px rgba(12,26,38,.7); cursor:pointer; }
  .tsm-map__pop { left:12px; right:12px; bottom:76px; width:auto; }
  .tsm-map__warn { bottom:130px; }
  .tsm .tsm-fab { position:fixed; left:50%; bottom:calc(16px + env(safe-area-inset-bottom)); transform:translateX(-50%); z-index:9000; display:inline-flex; align-items:center; gap:8px; height:46px; padding:0 22px; border:0; border-radius:var(--r); background:var(--ink); color:var(--paper); font:500 12px var(--font); letter-spacing:.18em; text-transform:uppercase; box-shadow:0 12px 30px -10px rgba(12,26,38,.7); cursor:pointer; }
  .tsm-app.is-map .tsm-fab { display:none; }
  .tsm-panel__h1 { font-size:19px; }
  .tsm-map__move span { display:none; }
}

@media (max-width:1560px) { .tsm .tsm-fbtn { padding:0 12px; letter-spacing:.1em; } .tsm-filters { gap:6px; } .tsm-sort { letter-spacing:.1em; } }

/* ---------- Colores por tipo (design system TODOSSANTOS.COM) ----------
   Casas = pacific #3F5A6B · Terrenos = brick #8A3B2E · Condos = olive #4F553C
   Comercial = charcoal #1D1C1A · Multifamiliar / Fraccional = stone #4A4843 */
.tsm { --pacific:#3F5A6B; --olive:#4F553C; --brick:#8A3B2E; --charcoal:#1D1C1A; --stone:#4A4843; --ivory:#F4F0E8; --kind:var(--charcoal); }
.tsm-kind--houses { --kind:var(--pacific); }
.tsm-kind--land { --kind:var(--brick); }
.tsm-kind--condos { --kind:var(--olive); }
.tsm-kind--commercial { --kind:var(--charcoal); }
.tsm-kind--multifamily, .tsm-kind--fractional { --kind:var(--stone); }

/* Ficha (tarjeta): línea superior, etiqueta de tipo y marcador sin foto en el color del tipo */
.tsm-card { border-top:3px solid var(--kind); }
.tsm-card .tsm-card__type, .tsm-single .tsm-card__type { background:var(--kind); border-color:var(--kind); color:var(--ivory); }
.tsm-card__ph { background:color-mix(in srgb, var(--kind) 12%, var(--ivory)); color:var(--kind); }
.tsm-card__ph small { color:var(--kind); }
.tsm-card:hover, .tsm-card.is-hover { border-top-color:var(--kind); }
.tsm-card.is-selected { border-color:var(--kind); box-shadow:0 0 0 1px var(--kind),0 18px 40px -24px rgba(29,28,26,.4); }

/* Pines del mapa por tipo */
.tsm .tsm-pin[class*="tsm-kind--"] { background:var(--kind); border-color:var(--kind); color:var(--ivory); }
.tsm .tsm-pin[class*="tsm-kind--"]::after { border-right-color:var(--kind); border-bottom-color:var(--kind); }
.tsm .tsm-pin[class*="tsm-kind--"].is-hover, .tsm .tsm-pin[class*="tsm-kind--"]:hover { background:var(--charcoal); border-color:var(--charcoal); color:var(--ivory); }
.tsm .tsm-pin[class*="tsm-kind--"].is-selected { background:var(--ivory); color:var(--kind); border-color:var(--kind); border-width:2px; }
.tsm .tsm-pin.is-approx::before { border-color:color-mix(in srgb, var(--kind) 45%, transparent); }

/* Muestras de color (filtro de tipo y leyenda del mapa) */
.tsm-swatch { display:inline-block; width:10px; height:10px; flex:none; background:var(--kind); }
.tsm-opt .tsm-swatch { margin-right:-2px; }
.tsm-map__legend { display:inline-flex; align-items:center; gap:14px; height:36px; padding:0 12px; background:var(--paper); border:1px solid var(--line); border-radius:var(--r); font:500 11px var(--font); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-2); }
.tsm-map__legend > span { display:inline-flex; align-items:center; gap:6px; }
@media (max-width:1100px) { .tsm-map__legend { display:none; } }
