/* ============================================================
   QOLARI — design tokens extraídos por engenharia reversa
   do idealista 15.5.1 (kiwi design system)
   ============================================================ */
:root {
  /* marca */
  --brand-10:#faffe0; --brand-20:#edfca2; --brand-30:#e1f56e;
  --brand-40:#b1d004; --brand-50:#839906; --brand-60:#576600;
  --accent-10:#fff0f9; --accent-20:#ffd1ee; --accent-30:#d158a5;
  --accent-40:#b62682; --accent-50:#8f156a; --accent-60:#660c51;
  /* neutros (mono) */
  --mono-00:#ffffff; --mono-05:#fafbf9; --mono-10:#f4f5f2;
  --mono-20:#e5e6e1; --mono-30:#cbccc7; --mono-40:#a3a3a0;
  --mono-50:#6f6f6d; --mono-60:#4d4d4c; --mono-100:#141414;
  /* semânticos */
  --info-10:#ebf4ff; --info-20:#d1e7ff; --info-40:#1d84fa; --info-50:#145bc7;
  --positive-10:#ebfaeb; --positive-20:#c5f0c5; --positive-40:#0c990c; --positive-50:#1d7a24;
  --negative-10:#fdeceb; --negative-40:#e02b1d; --negative-50:#c21b0f;
  --warning-10:#fff3e5; --warning-40:#e07901;
  /* aliases semânticos */
  --bg-base:var(--mono-05); --bg-primary:var(--mono-00); --bg-secondary:var(--mono-10);
  --content-primary:var(--mono-100); --content-secondary:var(--mono-60);
  --content-tertiary:var(--mono-50); --content-accent:var(--accent-40);
  --border-primary:var(--mono-20); --border-secondary:var(--mono-50);
  /* escala de espaçamento (4dp base) */
  --sp-050:2px; --sp-100:4px; --sp-200:8px; --sp-300:12px;
  --sp-400:16px; --sp-600:24px; --sp-800:32px; --sp-1000:40px; --sp-1200:48px;
  /* raios */
  --r-sm:2px; --r-md:4px; --r-lg:8px; --r-full:999px;
  /* tipografia */
  --fs-050:10px; --fs-100:12px; --fs-200:14px; --fs-300:16px;
  --fs-400:18px; --fs-500:20px; --fs-600:22px; --fs-700:24px; --fs-800:28px;
  --lh-200:1.5; --lh-300:1.5; --lh-400:1.5; --lh-500:1.4; --lh-700:1.375;
  --font:'Roboto','Segoe UI',system-ui,-apple-system,sans-serif;
  --shadow-1:0 1px 2px rgba(20,20,20,.07);
  --shadow-2:0 4px 14px rgba(20,20,20,.10);
  --shadow-3:0 12px 32px rgba(20,20,20,.16);
  --nav-h:56px;
}

/* ---------- modo escuro ---------- */
body.dark {
  --bg-base:#141414; --bg-primary:#1e1e1d; --bg-secondary:#262625;
  --content-primary:#f4f5f2; --content-secondary:#cbccc7; --content-tertiary:#a3a3a0;
  --border-primary:#3a3a38; --border-secondary:#6f6f6d;
  --mono-00:#1e1e1d; --mono-05:#141414; --mono-10:#262625;
  --mono-20:#3a3a38; --mono-30:#4d4d4c; --mono-40:#6f6f6d;
  --mono-50:#a3a3a0; --mono-60:#cbccc7; --mono-100:#f4f5f2;
  --brand-30:#e1f56e; --accent-40:#d158a5;
  --shadow-1:0 1px 2px rgba(0,0,0,.4); --shadow-2:0 4px 14px rgba(0,0,0,.45);
  --shadow-3:0 12px 32px rgba(0,0,0,.55);
}
body.dark .field, body.dark .toolbar select { background:#1e1e1d; color:var(--content-primary); }
body.dark .suggest, body.dark .sheet { background:#1e1e1d; }
body.dark .chip { background:#1e1e1d; }
body.dark .chip.on { background:#f4f5f2; color:#141414; }
body.dark .seg button.on { background:#f4f5f2; color:#141414; }
body.dark .view-toggle button.on { background:#f4f5f2; color:#141414; }
body.dark .pager span.on { background:#f4f5f2; color:#141414; border-color:#f4f5f2; }
body.dark .fav-btn { background:rgba(30,30,29,.92); }
body.dark .fav-btn svg { stroke:#f4f5f2; }
body.dark .fav-btn.on svg { fill:var(--accent-40); stroke:var(--accent-40); }
body.dark .btn-outline { border-color:#f4f5f2; color:#f4f5f2; }
body.dark .btn-outline:hover { background:#262625; }
body.dark .card { border-color:#262625; }
body.dark .searchbox { background:#1e1e1d; }
body.dark .searchbox .field { background:#262625; }
body.dark .skel { background:linear-gradient(90deg,#262625 25%,#3a3a38 50%,#262625 75%); background-size:200% 100%; }

* { margin:0; padding:0; box-sizing:border-box; }
html { -webkit-tap-highlight-color:transparent; }
body {
  font-family:var(--font); background:var(--bg-base); color:var(--content-primary);
  font-size:var(--fs-300); line-height:var(--lh-300);
  padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));
}
a { color:inherit; text-decoration:none; }
button { font:inherit; cursor:pointer; border:0; background:none; color:inherit; }
input,select,textarea { font:inherit; color:var(--content-primary); }
img { display:block; max-width:100%; }

/* ---------- texto ---------- */
.h-xs{font-size:var(--fs-050)} .h-s{font-size:var(--fs-100)} .h-m{font-size:var(--fs-200)}
.t-body-s{font-size:var(--fs-100);line-height:18px}
.t-body-m{font-size:var(--fs-200);line-height:21px}
.t-body-l{font-size:var(--fs-300);line-height:24px}
.t-title{font-size:var(--fs-500);font-weight:700}
.t-headline{font-size:var(--fs-700);font-weight:700;line-height:var(--lh-700)}
.semibold{font-weight:600} .bold{font-weight:700}
.c-secondary{color:var(--content-secondary)} .c-tertiary{color:var(--content-tertiary)}
.c-accent{color:var(--content-accent)}

/* ---------- layout ---------- */
.page{max-width:1180px;margin:0 auto;padding:0 var(--sp-400)}
@media (max-width:640px){ .page{padding:0 var(--sp-300)} }

/* ---------- top bar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;background:var(--bg-primary);
  border-bottom:1px solid var(--border-primary);
}
.topbar-in{max-width:1180px;margin:0 auto;display:flex;align-items:center;
  gap:var(--sp-300);padding:var(--sp-200) var(--sp-400);height:56px;position:relative}
.logo{position:absolute;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:var(--sp-200);font-weight:800;
  font-size:var(--fs-600);letter-spacing:-.5px;color:var(--mono-100)}
.logo-mark{width:30px;height:30px;border-radius:var(--r-lg);
  background:var(--brand-30);display:grid;place-items:center;
  font-weight:800;font-size:15px;color:var(--mono-100)}
.topbar-actions{margin-left:auto;display:flex;gap:var(--sp-200);align-items:center}
.icon-btn{width:40px;height:40px;border-radius:var(--r-full);display:grid;
  place-items:center;color:var(--content-secondary);position:relative}
.icon-btn:hover{background:var(--bg-secondary)}
.icon-btn .badge-dot{position:absolute;top:6px;right:6px;min-width:16px;height:16px;
  padding:0 4px;border-radius:var(--r-full);background:var(--accent-40);color:#fff;
  font-size:10px;font-weight:700;display:grid;place-items:center}

/* ---------- lime toolbar (ecrã de resultados idealista) ---------- */
.lime-toolbar{position:sticky;top:0;z-index:50;background:var(--brand-30);
  box-shadow:var(--shadow-1)}
.lime-toolbar-in{display:flex;align-items:center;gap:var(--sp-200);
  min-height:56px;padding:var(--sp-100) var(--sp-200)}
.lime-toolbar .lt-mid{flex:1;text-align:center;min-width:0}
.lime-toolbar .lt-title{font-size:var(--fs-200);font-weight:700;line-height:18px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lime-toolbar .lt-sub{font-size:var(--fs-100);color:#4d4d4c;line-height:16px}
.lime-toolbar .icon-btn{color:#141414;flex:none}
.lime-toolbar .lt-title{color:#141414}

/* ---------- floating menu: Filtros | Ordenar | Mapa ---------- */
.fmenu{display:flex;align-items:stretch;background:var(--bg-primary);
  border-bottom:1px solid var(--border-primary);min-height:48px}
.fmenu button,.fmenu a{flex:1;display:flex;align-items:center;justify-content:center;
  gap:var(--sp-200);font-size:var(--fs-200);font-weight:600;
  color:var(--content-primary);padding:10px 4px}
.fmenu .fdiv{width:1px;background:var(--border-primary);margin:7px 0}
.fmenu svg{width:20px;height:20px}
.fmenu .fcount{min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-full);
  background:var(--accent-40);color:#fff;font-size:var(--fs-100);font-weight:700;
  display:inline-grid;place-items:center}

/* ---------- home idealista ---------- */
.hotd{position:relative;display:block;aspect-ratio:21/9;max-height:300px;
  overflow:hidden;background:var(--mono-10)}
.hotd img{width:100%;height:100%;object-fit:cover}
.hotd .hotd-info{position:absolute;left:0;right:0;bottom:0;padding:var(--sp-400);
  background:linear-gradient(0deg,rgba(20,20,20,.72),transparent);color:#fff}
.hotd .hotd-info b{display:block;font-size:var(--fs-300);font-weight:700}
.hotd .hotd-info span{font-size:var(--fs-200);opacity:.92}
.hotd .hotd-tag{position:absolute;top:12px;left:12px}
.search-brand{background:var(--brand-30);padding:var(--sp-400)}
.search-brand .seg{margin-bottom:var(--sp-400)}
.search-brand .ptypes{margin:0 0 var(--sp-400)}
.search-brand .ptypes .chip{background:var(--bg-primary);border-color:transparent}
.search-brand .ptypes .chip.on{background:var(--accent-10);border-color:var(--accent-40);color:var(--accent-40)}
.search-brand .field{min-height:48px}
.search-brand .btn{width:100%;margin-top:var(--sp-400)}

/* ---------- bottom nav (mobile app feel) ---------- */
.bottomnav{
  position:fixed;left:0;right:0;bottom:0;z-index:60;height:calc(var(--nav-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:var(--bg-primary);border-top:1px solid var(--border-primary);
  display:flex;max-width:640px;margin:0 auto;
}
.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:2px;font-size:var(--fs-050);font-weight:600;
  color:var(--content-tertiary);padding-top:6px}
.bottomnav a.active{color:var(--accent-40)}
.bottomnav a svg{width:24px;height:24px}
@media(min-width:900px){ .bottomnav{display:none} body{padding-bottom:0} }

/* ---------- botões ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-200);
  min-height:48px;padding:var(--sp-300) var(--sp-600);border-radius:var(--r-md);
  font-weight:600;font-size:var(--fs-300);transition:.15s;white-space:nowrap}
.btn:active{transform:scale(.97)}
.btn-brand{background:var(--brand-30);color:var(--mono-100)}
.btn-brand:hover{background:var(--brand-40)}
.btn-accent{background:var(--accent-40);color:#fff}
.btn-accent:hover{background:var(--accent-50)}
.btn-dark{background:var(--mono-100);color:#fff}
.btn-dark:hover{background:var(--mono-60)}
.btn-outline{border:1px solid var(--border-secondary);background:transparent;
  color:var(--content-primary)}
.btn-outline:hover{background:var(--mono-10)}
.btn-ghost{color:var(--accent-40)}
.btn-block{width:100%}
.btn-lg{min-height:48px;font-size:var(--fs-300)}
.btn[disabled]{opacity:.5;pointer-events:none}

/* ---------- chips / tags ---------- */
.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;
  border-radius:var(--r-sm);border:1px solid var(--border-secondary);
  background:var(--bg-primary);font-size:var(--fs-200);font-weight:600;
  color:var(--content-secondary);cursor:pointer}
.chip.on{border-color:var(--accent-40);background:var(--accent-10);color:var(--accent-40)}
.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;
  border-radius:var(--r-sm);font-size:var(--fs-100);font-weight:700}
.tag-brand{background:var(--brand-30);color:var(--mono-100)}
.tag-accent{background:var(--accent-10);color:var(--accent-40)}
.tag-dark{background:rgba(20,20,20,.75);color:#fff;backdrop-filter:blur(4px)}

/* ---------- card de imóvel (big_row_element idealista) ---------- */
.card{background:var(--bg-primary);border-radius:var(--r-lg);
  overflow:hidden;position:relative}
.card-media{position:relative;aspect-ratio:4/3;background:var(--mono-10);overflow:hidden}
.card-media img{width:100%;height:100%;object-fit:cover}
.card-media .gal-nav{position:absolute;top:0;bottom:0;width:44px;display:grid;
  place-items:center;color:#fff;opacity:0;transition:.15s;z-index:2}
.card:hover .gal-nav{opacity:1}
.card-media .gal-nav.prev{left:0;background:linear-gradient(90deg,rgba(0,0,0,.3),transparent)}
.card-media .gal-nav.next{right:0;background:linear-gradient(-90deg,rgba(0,0,0,.3),transparent)}
.card-count{position:absolute;bottom:8px;right:8px;z-index:2}
.fav-btn{position:absolute;top:10px;right:10px;z-index:3;width:38px;height:38px;
  border-radius:var(--r-full);background:rgba(255,255,255,.92);display:grid;
  place-items:center;box-shadow:var(--shadow-1);transition:.15s}
.fav-btn svg{width:21px;height:21px;fill:none;stroke:var(--mono-100);stroke-width:2}
.fav-btn.on svg{fill:var(--accent-40);stroke:var(--accent-40)}
.fav-btn:active{transform:scale(.85)}
.discard-btn{position:absolute;top:56px;right:10px;z-index:3;width:38px;height:38px;
  border-radius:var(--r-full);background:rgba(255,255,255,.92);display:grid;
  place-items:center;box-shadow:var(--shadow-1);transition:.15s;opacity:0}
.card:hover .discard-btn,.discard-btn:focus-visible{opacity:1}
@media(hover:none){.discard-btn{opacity:.92}}
.discard-btn svg{width:19px;height:19px;fill:none;stroke:var(--mono-60);stroke-width:2}
.discard-btn:hover svg{stroke:var(--negative-40)}
body.dark .discard-btn{background:rgba(30,30,29,.92)}
body.dark .discard-btn svg{stroke:#cbccc7}
.card-body{padding:var(--sp-200) var(--sp-400) var(--sp-400);position:relative}
.card-title{font-weight:500;font-size:var(--fs-300);line-height:24px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card-dist{float:right;font-size:var(--fs-200);color:var(--content-tertiary);
  margin-left:var(--sp-200)}
.card-sub{font-size:var(--fs-300);color:var(--content-primary);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.card-price{font-size:var(--fs-800);font-weight:500;margin-top:var(--sp-200);
  display:flex;align-items:baseline;gap:var(--sp-200);flex-wrap:wrap;line-height:1.2}
.card-price .old{font-size:var(--fs-300);font-weight:400;color:var(--content-tertiary);
  text-decoration:line-through}
.card-meta-wrap{display:flex;align-items:flex-end;gap:var(--sp-200);margin-top:var(--sp-200)}
.card-meta{display:flex;flex-wrap:wrap;column-gap:var(--sp-400);flex:1;
  font-size:var(--fs-300);color:var(--content-primary)}
.card-date{font-size:var(--fs-300);color:var(--content-tertiary);white-space:nowrap}
.card-actions{display:flex;gap:var(--sp-200);margin-top:var(--sp-300);
  border-top:1px solid var(--border-primary);padding-top:var(--sp-300)}
.card-actions .btn{min-height:40px;padding:6px 16px;font-size:var(--fs-200);flex:1}
.card-agency{display:flex;align-items:center;gap:var(--sp-200);margin-top:var(--sp-200);
  font-size:var(--fs-100);color:var(--content-tertiary)}
.avatar{width:22px;height:22px;border-radius:var(--r-full);display:grid;
  place-items:center;font-size:10px;font-weight:700;color:#fff;flex:none}

/* ---------- grelha de resultados ---------- */
.grid{display:grid;grid-template-columns:1fr;gap:var(--sp-300)}
@media(min-width:640px){.grid{grid-template-columns:repeat(2,1fr);gap:var(--sp-400)}}
@media(min-width:1024px){.grid{grid-template-columns:repeat(3,1fr)}}

/* ---------- barra de ferramentas dos resultados ---------- */
.results{padding-top:var(--sp-300)}
.toolbar{display:flex;align-items:center;gap:var(--sp-200);
  padding:var(--sp-300) 0;flex-wrap:wrap}
.toolbar select{padding:8px 12px;border-radius:var(--r-md);
  border:1.5px solid var(--border-primary);background:#fff;font-weight:600;font-size:var(--fs-200)}
.results-count{font-size:var(--fs-200);color:var(--content-secondary);font-weight:600}
.view-toggle{margin-left:auto;display:flex;border:1.5px solid var(--border-primary);
  border-radius:var(--r-md);overflow:hidden}
.view-toggle button{padding:7px 13px;font-size:var(--fs-200);font-weight:600;
  display:flex;gap:5px;align-items:center}
.view-toggle button.on{background:var(--mono-100);color:#fff}

/* ---------- sheet (filtros / bottom sheet) ---------- */
.sheet-backdrop{position:fixed;inset:0;background:rgba(20,20,20,.55);z-index:80;
  opacity:0;pointer-events:none;transition:.25s}
.sheet{position:fixed;inset:0;z-index:81;background:var(--bg-primary);
  transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,.35,1);
  display:flex;flex-direction:column}
.sheet.open,.sheet-backdrop.open{transform:none;opacity:1;pointer-events:auto}
.sheet-btm{top:auto;height:auto;max-height:75vh;border-radius:16px 16px 0 0}
@media(min-width:720px){.sheet-btm{width:480px}}
@media(min-width:720px){
  .sheet{inset:auto;top:50%;left:50%;transform:translate(-50%,-46%) scale(.98);
    width:640px;max-height:88vh;border-radius:var(--r-lg);opacity:0;pointer-events:none;
    box-shadow:var(--shadow-3)}
  .sheet.open{transform:translate(-50%,-50%) scale(1);opacity:1;pointer-events:auto}
}
.sheet-head{display:flex;align-items:center;gap:var(--sp-300);
  padding:var(--sp-400);border-bottom:1px solid var(--border-primary)}
.sheet-head h2{font-size:var(--fs-400);font-weight:700}
.sheet-body{flex:1;overflow-y:auto;padding:var(--sp-400);-webkit-overflow-scrolling:touch}
.sheet-foot{padding:var(--sp-400);border-top:1px solid var(--border-primary);
  display:flex;gap:var(--sp-300);background:var(--bg-primary)}
.f-group{margin-bottom:var(--sp-600)}
.f-group>label{display:block;font-weight:700;font-size:var(--fs-200);margin-bottom:var(--sp-200)}
.f-row{display:flex;gap:var(--sp-200);flex-wrap:wrap}
.seg{display:flex;border:1px solid var(--border-secondary);border-radius:var(--r-sm);
  overflow:hidden;width:100%;background:var(--bg-primary)}
.seg button{flex:1;min-height:48px;padding:10px;font-weight:700;font-size:var(--fs-300);
  color:var(--content-secondary)}
.seg button.on{background:var(--accent-10);color:var(--accent-40);
  box-shadow:inset 0 0 0 1px var(--accent-40)}
.range-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-200)}
.field{width:100%;padding:11px 14px;border:1px solid var(--border-secondary);
  border-radius:var(--r-sm);background:#fff;font-size:var(--fs-300)}
.field:focus{outline:none;border-color:var(--mono-100)}
.checkline{display:flex;align-items:center;gap:var(--sp-300);padding:10px 0;
  font-size:var(--fs-300);cursor:pointer}
.checkline input{width:20px;height:20px;accent-color:var(--mono-100)}

/* ---------- detalhe ---------- */
.detail-hero{position:relative;background:#000}
.detail-hero img{width:100%;height:56vw;max-height:440px;object-fit:cover}
@media(min-width:900px){.detail-hero img{height:440px}}
.dgal-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;
  border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center;
  z-index:5;box-shadow:var(--shadow-2)}
.dgal-nav.l{left:12px}.dgal-nav.r{right:12px}
.dgal-counter{position:absolute;bottom:14px;right:14px;z-index:5}
.detail-grid{display:grid;grid-template-columns:1fr;gap:var(--sp-600)}
@media(min-width:960px){.detail-grid{grid-template-columns:1fr 360px;gap:var(--sp-800)}}
.dsec{padding:var(--sp-400) 0;border-bottom:1px solid var(--border-primary)}
.dsec h2{font-size:var(--fs-400);font-weight:700;margin-bottom:var(--sp-300)}
.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:var(--sp-300);font-size:var(--fs-200)}
.feat-grid span{display:flex;gap:8px;align-items:center;color:var(--content-primary)}
.feat-grid svg{width:19px;height:19px;color:var(--content-secondary);flex:none}
.adv-card{background:var(--bg-primary);border:1px solid var(--border-primary);
  border-radius:var(--r-lg);padding:var(--sp-400);position:sticky;top:72px}
/* barra de ações do detalhe (Favorito|Descartar|Partilhar — spec detail_call_action_buttons) */
.dactions{display:flex;margin:var(--sp-300) 0 var(--sp-100)}
.dactions button{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:var(--sp-200);font-size:var(--fs-100);font-weight:600;color:var(--content-primary)}
.dactions button:active{transform:scale(.94)}
.dactions .act-fav.on svg{fill:var(--accent-40);stroke:var(--accent-40)}
.dactions .act-fav.on{color:var(--accent-40)}
/* barra inferior de contacto mobile (spec detail_bottom_buttons_bar) */
.detail-cta{position:fixed;left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));
  z-index:55;background:var(--bg-primary);border-top:1px solid var(--border-primary);
  display:flex;gap:var(--sp-200);padding:var(--sp-200) var(--sp-400)}
.detail-cta .btn{flex:1}
@media(min-width:960px){.detail-cta,.detail-cta-gap{display:none}}
@media(max-width:959px){.adv-card{position:static}}
.energy-badge{display:inline-flex}
.energy-badge b{padding:3px 12px;border-radius:var(--r-sm);color:#fff;font-size:var(--fs-100)}

/* ---------- calc hipoteca ---------- */
.mortgage{background:var(--bg-secondary);border-radius:var(--r-lg);padding:var(--sp-400)}
.mortgage input[type=range]{width:100%;accent-color:var(--accent-40)}
.mort-out{font-size:var(--fs-700);font-weight:700}

/* ---------- home ---------- */
.hero{background:linear-gradient(160deg,var(--brand-20),var(--brand-30) 55%,#d9ef63);
  padding:var(--sp-1200) var(--sp-400) var(--sp-800);text-align:center}
.hero h1{font-size:clamp(26px,5.5vw,44px);font-weight:800;letter-spacing:-1px;
  max-width:640px;margin:0 auto var(--sp-200)}
.hero p{color:var(--mono-60);font-size:var(--fs-300);max-width:520px;margin:0 auto var(--sp-600)}
.searchbox{max-width:680px;margin:0 auto;background:var(--bg-primary);
  border-radius:var(--r-lg);box-shadow:var(--shadow-3);padding:var(--sp-300)}
.searchbox .seg{margin-bottom:var(--sp-300)}
.searchrow{display:flex;gap:var(--sp-200)}
.searchrow .field{flex:1;height:52px;font-size:var(--fs-300)}
.ptypes{display:flex;gap:var(--sp-200);flex-wrap:wrap;justify-content:center;
  margin-top:var(--sp-300)}
.ptypes .chip{border-color:transparent;background:var(--mono-10)}
.ptypes .chip.on{background:var(--mono-100);color:#fff}
.suggest{position:absolute;inset-inline:0;top:calc(100% + 4px);background:#fff;
  border:1px solid var(--border-primary);border-radius:var(--r-md);
  box-shadow:var(--shadow-2);z-index:30;overflow:hidden;text-align:left}
.suggest button{display:flex;width:100%;padding:11px 14px;gap:10px;align-items:center;
  font-size:var(--fs-200)}
.suggest button:hover{background:var(--mono-10)}
.suggest small{color:var(--content-tertiary);margin-left:auto}

/* ---------- auth ---------- */
.auth-wrap{max-width:420px;margin:var(--sp-800) auto;background:var(--bg-primary);
  border:1px solid var(--border-primary);border-radius:var(--r-lg);padding:var(--sp-600)}
.auth-wrap h1{font-size:var(--fs-600);margin-bottom:var(--sp-400)}

/* ---------- wizard ---------- */
.steps{display:flex;gap:var(--sp-100);margin-bottom:var(--sp-600)}
.steps i{flex:1;height:4px;border-radius:2px;background:var(--mono-20)}
.steps i.on{background:var(--brand-40)}

/* ---------- lista de mensagens / guardados ---------- */
.lrow{display:flex;gap:var(--sp-300);padding:var(--sp-300);background:var(--bg-primary);
  border:1px solid var(--border-primary);border-radius:var(--r-lg);margin-bottom:var(--sp-200);
  align-items:center}
.lrow img{width:96px;height:72px;object-fit:cover;border-radius:var(--r-md);flex:none}

/* ---------- toast ---------- */
#toast{position:fixed;bottom:calc(var(--nav-h) + 18px);left:50%;
  transform:translate(-50%,20px);background:var(--mono-100);color:#fff;
  padding:12px 20px;border-radius:var(--r-full);font-size:var(--fs-200);
  font-weight:600;opacity:0;transition:.25s;z-index:200;pointer-events:none;
  max-width:90vw;text-align:center}
#toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- empty state ---------- */
.empty{text-align:center;padding:var(--sp-1200) var(--sp-400);color:var(--content-secondary)}
.empty svg{width:72px;height:72px;margin:0 auto var(--sp-400);color:var(--mono-30)}
.empty h2{color:var(--content-primary);font-size:var(--fs-500);margin-bottom:var(--sp-200)}

/* ---------- skeleton ---------- */
.skel{background:linear-gradient(90deg,var(--mono-10) 25%,var(--mono-20) 50%,var(--mono-10) 75%);
  background-size:200% 100%;animation:sk 1.4s infinite;border-radius:var(--r-md)}
@keyframes sk{to{background-position:-200% 0}}

/* ---------- mapa ---------- */
#map{height:100%;min-height:420px;border-radius:var(--r-lg)}
.map-wrap{display:none}
.results.map-on .grid{display:none}
.results.map-on .map-wrap{display:block}
@media(min-width:1024px){
  .results.map-on{display:grid;grid-template-columns:1fr 480px;gap:var(--sp-400)}
  .results.map-on .grid{display:grid;grid-template-columns:1fr 1fr;align-content:start}
  .results.map-on .map-wrap{display:block;position:sticky;top:72px}
  .results.map-on .card{min-width:0}
}
.map-pin{background:var(--brand-30);border:2px solid var(--mono-100);border-radius:var(--r-full);
  padding:3px 8px;font-weight:700;font-size:12px;white-space:nowrap;box-shadow:var(--shadow-1)}
.map-pin.sel{background:var(--accent-40);color:#fff;border-color:var(--accent-40)}

/* ---------- paginação ---------- */
.pager{display:flex;gap:var(--sp-200);justify-content:center;padding:var(--sp-600) 0}
.pager a,.pager span{min-width:40px;height:40px;padding:0 12px;display:grid;
  place-items:center;border-radius:var(--r-md);border:1.5px solid var(--border-primary);
  font-weight:600;font-size:var(--fs-200)}
.pager span.on{background:var(--mono-100);color:#fff;border-color:var(--mono-100)}

/* ---------- utilitários ---------- */
.row{display:flex;align-items:center;gap:var(--sp-200)}
.grow{flex:1}
.mt-1{margin-top:var(--sp-100)}.mt-2{margin-top:var(--sp-200)}
.mt-3{margin-top:var(--sp-300)}.mt-4{margin-top:var(--sp-400)}.mt-6{margin-top:var(--sp-600)}
.mb-2{margin-bottom:var(--sp-200)}.mb-3{margin-bottom:var(--sp-300)}.mb-4{margin-bottom:var(--sp-400)}
.center{text-align:center}
.hide{display:none!important}
@media(max-width:640px){.hide-sm{display:none!important}}
@media(min-width:641px){.hide-lg{display:none!important}}

/* ---------- lightbox ---------- */
.lightbox{position:fixed;inset:0;background:rgba(10,10,10,.96);z-index:120;
  display:flex;align-items:center;justify-content:center;opacity:0;
  pointer-events:none;transition:.2s}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-width:94vw;max-height:88vh;object-fit:contain;border-radius:var(--r-md)}
.lightbox .lb-close{position:absolute;top:16px;right:16px;width:44px;height:44px;
  border-radius:50%;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center}
.lightbox .lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;
  border-radius:50%;background:rgba(255,255,255,.12);color:#fff;display:grid;place-items:center}
.lightbox .lb-nav.l{left:12px}.lightbox .lb-nav.r{right:12px}
.lightbox .lb-count{position:absolute;bottom:16px;left:0;right:0;text-align:center;
  color:#fff;font-size:var(--fs-200);font-weight:600}
.lb-thumbs{position:absolute;bottom:44px;left:0;right:0;display:flex;gap:8px;
  justify-content:center;padding:0 16px;overflow-x:auto}
.lb-thumbs img{width:64px;height:44px;object-fit:cover;border-radius:4px;opacity:.55;
  cursor:pointer;border:2px solid transparent}
.lb-thumbs img.on{opacity:1;border-color:var(--brand-30)}

/* ---------- filtros ativos ---------- */
.fchips{display:flex;gap:var(--sp-200);flex-wrap:wrap;padding-bottom:var(--sp-200)}
.fchip{display:inline-flex;align-items:center;gap:6px;background:var(--mono-100);
  color:#fff;padding:5px 12px;border-radius:var(--r-full);font-size:var(--fs-100);font-weight:600}
.fchip svg{width:12px;height:12px}

/* ---------- footer ---------- */
.footer{margin-top:var(--sp-800);border-top:1px solid var(--border-primary);
  background:var(--bg-primary);padding:var(--sp-800) 0 var(--sp-1200)}
.footer .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-600)}
.footer h3{font-size:var(--fs-200);margin-bottom:var(--sp-300)}
.footer a{display:block;padding:4px 0;color:var(--content-secondary);font-size:var(--fs-200)}
.footer .legal{margin-top:var(--sp-600);padding-top:var(--sp-400);
  border-top:1px solid var(--border-primary);color:var(--content-tertiary);font-size:var(--fs-100)}

/* thumbs na página de detalhe */
.dthumbs{display:flex;gap:var(--sp-200);margin-top:var(--sp-200);overflow-x:auto;padding-bottom:4px}
.dthumbs img{width:96px;height:64px;object-fit:cover;border-radius:var(--r-md);
  cursor:pointer;opacity:.7;flex:none;border:2px solid transparent}
.dthumbs img.on{opacity:1;border-color:var(--mono-100)}
.sticky-cta{position:sticky;bottom:calc(var(--nav-h) + 10px);z-index:40;
  padding:var(--sp-200) 0}
@media(min-width:900px){.sticky-cta{bottom:10px}}

/* ---------- multizona / mapa ---------- */
.draw-bar{position:sticky;bottom:calc(var(--nav-h) + 12px);z-index:500;
  background:var(--bg-primary);border:1px solid var(--border-primary);
  border-radius:var(--r-lg);padding:12px;box-shadow:var(--shadow-2);
  display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.bbox-btn{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:500;
  background:var(--mono-100);color:var(--bg-primary);border-radius:var(--r-full);
  padding:9px 18px;font-size:var(--fs-200);font-weight:600;box-shadow:var(--shadow-2);display:none}
.bbox-btn.show{display:block}
.poly-vertex{width:12px;height:12px;background:#fff;border:3px solid var(--accent-40);
  border-radius:var(--r-full);box-shadow:var(--shadow-1)}

/* ---------- gráfico histórico de preço ---------- */
.pchart{display:flex;align-items:flex-end;gap:var(--sp-400);height:110px;padding:0 4px}
.pchart .bar{flex:1;max-width:90px;background:var(--mono-20);border-radius:var(--r-md) var(--r-md) 0 0;
  position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:8px}
.pchart .bar.last{background:var(--brand-40)}
.pchart .bar i{position:absolute;top:-22px;left:50%;transform:translateX(-50%);
  font-style:normal;font-size:var(--fs-100);font-weight:600;white-space:nowrap}
.pchart-x{display:flex;gap:var(--sp-400);padding:4px 4px 0}
.pchart-x span{flex:1;max-width:90px;text-align:center;font-size:var(--fs-100);color:var(--content-tertiary)}

/* ---------- tour 360 hotspots ---------- */
.t360-hs{position:absolute;z-index:3;width:34px;height:34px;border-radius:var(--r-full);
  background:rgba(255,255,255,.9);display:grid;place-items:center;
  box-shadow:var(--shadow-2);transform:translate(-50%,-50%);transition:.15s;cursor:pointer}
.t360-hs:hover{transform:translate(-50%,-50%) scale(1.15);background:var(--brand-30)}
.t360-hs svg{width:18px;height:18px;stroke:var(--mono-100)}
.t360-tag{position:absolute;top:10px;left:10px;z-index:3}

/* ---------- notificações ---------- */
.notif{display:flex;gap:var(--sp-300);padding:var(--sp-300) var(--sp-400);
  border-bottom:1px solid var(--border-primary);align-items:flex-start}
.notif.unread{background:var(--brand-10)}
.notif .nic{flex:none;width:38px;height:38px;border-radius:var(--r-full);
  background:var(--mono-10);display:grid;place-items:center;color:var(--mono-80)}
.notif.unread .nic{background:var(--brand-30)}

/* ---------- comparador de hipotecas ---------- */
.bank-row{display:flex;align-items:center;gap:var(--sp-300);padding:var(--sp-300) 0;
  border-bottom:1px solid var(--border-primary)}
.bank-row .blogo{flex:none;width:38px;height:38px;border-radius:var(--r-md);
  display:grid;place-items:center;font-weight:800;color:#fff;font-size:var(--fs-200)}
.bank-row .best{background:var(--positive-10)}

/* ---------- agência ---------- */
.agency-head{display:flex;gap:var(--sp-400);align-items:center;flex-wrap:wrap}
.agency-head .avatar{width:72px;height:72px;font-size:28px;border-radius:var(--r-lg)}
