/* ============================================================
   olcasas · app.css — Rediseño Impeccable (2026-07-06)
   Reemplazo TOTAL del app.css anterior. CSS-first sobre el
   markup vivo (bodyhome / bodylist / bodydetail / bodyoperaciones
   / head / foot). Tokens = tokens.css (fuente de verdad).
   Tipografía: Bricolage Grotesque (display) + Hanken Grotesk (body).
   ============================================================ */

/* Fuentes. Si head.tpl.php agrega el <link> de Google Fonts (recomendado,
   ver NOTES_site.md), este @import se puede borrar; mientras tanto el CSS
   es autocontenido. El head ya tiene los preconnect. */
@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,600;12..96,700;12..96,800&family=Hanken+Grotesk:wght@400;500;600;700&display=swap');

/* ---- Tokens (tokens.css) ---- */
:root{
  --font-display:"Bricolage Grotesque",system-ui,sans-serif;
  --font-body:"Hanken Grotesk",system-ui,sans-serif;
  --navy:#12325c;
  --navy-deep:#0b2140;
  --red:#d23b34;
  --red-deep:#b02a24;
  --wa:#1faf54;
  --ink:#0e1b2a;
  --body:#31414f;
  --muted:#66788a;
  --line:#e2e8f0;
  --soft:#f4f7fb;
  --bg:#fff;
  --r:14px;
  --shadow:0 6px 22px rgba(14,27,42,.07);
  /* alias legacy: algunos estilos inline del motor usan var(--blue) etc. */
  --blue:var(--navy);
  --blue-d:var(--navy-deep);
  --pizarra:#66788a;
  --pizarra-d:#31414f;
  --wa-d:#178f45;
}

/* ---- Base ---- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--font-body);color:var(--body);background:var(--soft);font-size:15px;line-height:1.55;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);letter-spacing:-.02em;line-height:1.15}
/* .serif viene del markup viejo (h1 hero): ahora es el display */
.serif{font-family:var(--font-display)}
.wrap{width:min(1240px,94vw);margin-inline:auto;padding:0}

/* ============================================================
   HEADER (head.tpl.php: header.top > .wrap.bar)
   ============================================================ */
header.top{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(10px) saturate(1.3);-webkit-backdrop-filter:blur(10px) saturate(1.3);border-bottom:1px solid var(--line)}
.top .bar{display:flex;align-items:center;gap:18px;height:64px}
.logo{display:flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:800;font-size:20px;letter-spacing:-.03em;color:var(--navy);white-space:nowrap}
.logo b{color:var(--red)}
.nav{display:flex;gap:4px;margin-left:6px}
.nav a{font-size:14.5px;font-weight:600;color:var(--body);padding:8px 13px;border-radius:9px;transition:background .15s,color .15s}
.nav a:hover{background:var(--soft);color:var(--ink)}
.top .sp{flex:1}
.login-link{font-weight:600;font-size:14px;color:var(--navy)}
.login-link:hover{color:var(--navy-deep)}

/* ---- Botones (átomos) ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:10px;font-family:inherit;font-weight:700;font-size:13.5px;padding:10px 18px;cursor:pointer;transition:background .15s,transform .18s cubic-bezier(.2,.8,.2,1),border-color .15s,color .15s}
.btn-blue{background:var(--navy);color:#fff;box-shadow:0 6px 16px -6px rgba(18,50,92,.55)}
.btn-blue:hover{background:var(--navy-deep)}
.btn-out{background:#fff;color:var(--body);border:1px solid var(--line);padding:8px 14px}
.btn-out:hover{border-color:var(--navy);color:var(--navy)}
/* CTA fuerte "Publicar": ROJO sólido (regla de marca) */
.btn-pub,.btn-red{background:var(--red);color:#fff;box-shadow:0 6px 16px -6px rgba(210,59,52,.5)}
.btn-pub:hover,.btn-red:hover{background:var(--red-deep);transform:translateY(-1px)}
.btn-wa{background:var(--wa);color:#fff}
.btn-wa:hover{filter:brightness(.94)}

/* ============================================================
   HOME (bodyhome.tpl.php)
   ============================================================ */
/* Hero: la foto+gradiente vienen inline desde el tpl */
.hero{position:relative;min-height:clamp(420px,56vh,580px);display:flex;align-items:flex-end;color:#fff;background-position:center;background-size:cover}
.hwrap{width:100%;padding-bottom:76px}
.hero .eb{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:13.5px;letter-spacing:.02em;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);padding:5px 12px;border-radius:100px;margin-bottom:16px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);text-transform:none}
.hero h1{color:#fff;font-size:clamp(2rem,5vw,3.6rem);font-weight:700;max-width:18ch;line-height:1.06;text-wrap:balance;letter-spacing:-.02em;text-shadow:0 2px 24px rgba(8,20,38,.45)}

/* Buscador colgado sobre el hero */
.searchpull{margin-top:-46px;position:relative;z-index:5}
.searchbox{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 18px 40px -18px rgba(11,33,64,.45),var(--shadow);padding:13px;display:grid;grid-template-columns:auto 1fr auto auto auto;gap:11px;align-items:center}
.searchbox .seg{display:inline-flex;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:3px}
.searchbox .seg button{background:transparent;border:0;font-family:inherit;font-weight:700;font-size:14px;color:var(--muted);padding:9px 16px;border-radius:8px;cursor:pointer;transition:.2s}
.searchbox .seg button.on{background:var(--navy);color:#fff;box-shadow:0 2px 8px -2px rgba(18,50,92,.5)}
.searchbox input,.searchbox select{height:48px;min-width:120px;border:1px solid var(--line);border-radius:10px;padding:0 14px;font-family:inherit;font-size:15px;font-weight:500;color:var(--ink);background:var(--bg);outline:none;transition:border .2s,box-shadow .2s;appearance:none;-webkit-appearance:none}
.searchbox select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2366788a' stroke-width='2'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
.searchbox input:focus,.searchbox select:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(18,50,92,.14)}
.searchbox .go{background:var(--navy);color:#fff;height:48px;padding:0 26px;font-size:15.5px;font-weight:700;border:0;border-radius:10px;cursor:pointer;font-family:inherit;transition:background .15s}
.searchbox .go:hover{background:var(--navy-deep)}

/* ---- Secciones ---- */
.sec{padding:clamp(36px,5vw,60px) 0}
.sec-h{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}
.sec-h h2{font-size:clamp(1.4rem,2.8vw,1.9rem);font-weight:700}
.sec-h a{color:var(--navy);font-weight:600;font-size:15px;white-space:nowrap}
.sec-h a:hover{color:var(--red)}

/* ---- Banda de datos $/m² (el diferenciador) ---- */
.m2{background:var(--navy);color:#fff;border-radius:20px;padding:clamp(24px,4vw,40px);box-shadow:0 20px 60px -30px rgba(11,33,64,.8);position:relative;overflow:hidden}
.m2::after{content:"";position:absolute;right:-80px;top:-80px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(201,138,43,.28),transparent 70%);pointer-events:none}
.m2 .t{font-size:14px;letter-spacing:.01em;text-transform:none;color:#9db6d8;font-weight:600;position:relative;z-index:1}
/* !important: el tpl trae font-size inline en el h2 */
.m2 h2{color:#fff;font-size:clamp(1.5rem,3.2vw,2.15rem)!important;font-weight:700;margin:6px 0 4px;position:relative;z-index:1}
.m2 .zs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:rgba(255,255,255,.14);border-radius:14px;overflow:hidden;margin-top:24px;position:relative;z-index:1}
.m2 .z{background:var(--navy);border:0;border-radius:0;padding:18px 18px 20px;display:block}
.m2 .z .n{font-size:14px;color:#c3d3e8;font-weight:500}
.m2 .z .p{font-family:var(--font-display);font-weight:700;font-size:clamp(1.4rem,2.4vw,1.8rem);color:#fff;margin-top:6px;font-variant-numeric:tabular-nums}
.m2 .z .d{font-size:12.5px;color:#8ba4c4;font-weight:500;margin-top:2px}
.up{color:#34d399}.dn{color:#f87171}

/* ============================================================
   TARJETA de propiedad (home / listados / similares)
   markup vivo: a.card > .ph(img + span.op) + .bd(.pr .cat .lo .dt)
   ============================================================ */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:20px}
.grid.g3{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:0 1px 2px rgba(14,27,42,.05);transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s;display:flex;flex-direction:column}
.card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(14,27,42,.12)}
.card .ph{position:relative;aspect-ratio:4/3;background:#e9eef4;overflow:hidden}
.card .ph img{width:100%;height:100%;object-fit:cover}
/* badge Venta/Alquiler */
.card .op{position:absolute;top:11px;left:11px;background:var(--navy);color:#fff;font-size:11px;font-weight:800;letter-spacing:.03em;padding:5px 10px;border-radius:7px}
.card .m2b{position:absolute;top:11px;right:11px;background:#fff;color:var(--navy);font-size:12px;font-weight:800;padding:4px 9px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.card .bd{padding:14px 15px 16px;display:flex;flex-direction:column;flex:1}
.card .pr{font-family:var(--font-display);font-size:21px;font-weight:800;color:var(--navy);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.card .pr small{font-size:13px;color:var(--muted);font-weight:600}
.card .cat{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-top:6px}
.card .lo{font-size:13.5px;color:var(--body);font-weight:500;margin-top:2px}
.card .dt{font-size:12px;color:var(--muted);margin-top:4px}

/* ---- Guías (tiles del home) ---- */
.guides{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.guide{display:block;border:1px solid var(--line);border-radius:var(--r);padding:18px;background:var(--bg);box-shadow:0 1px 2px rgba(14,27,42,.05);transition:transform .2s,box-shadow .2s}
.guide:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.guide .ic{width:38px;height:38px;border-radius:10px;background:var(--soft);border:1px solid var(--line);display:grid;place-items:center;margin-bottom:10px;color:var(--navy);font-family:var(--font-display);font-weight:800}
.guide h3{font-size:15px;font-weight:700}
.guide p{font-size:13px;color:var(--muted);margin-top:4px}

/* ---- Ad slots (etiqueta + reserva anti-CLS) ---- */
.ad{position:relative;border:1px dashed #c6d2e0;background:repeating-linear-gradient(135deg,#eef2f7,#eef2f7 10px,#e9eef4 10px,#e9eef4 20px);border-radius:12px;min-height:104px;display:flex;align-items:center;justify-content:center;color:#8496a8;font-size:12.5px;text-align:center;padding:14px}
.ad .lb{position:absolute;top:8px;left:12px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#a9b6c4;font-weight:700}
.ad b{color:#8496a6}
.ad.feed{grid-column:1/-1;min-height:120px}

/* ============================================================
   LISTADOS (bodylist.tpl.php)
   ============================================================ */
/* Barra de filtros sticky: banda navy como el mockup */
.filterbar{position:sticky;top:64px;z-index:40;background:linear-gradient(180deg,var(--navy),var(--navy-deep));border-bottom:0;padding:14px 0;box-shadow:0 10px 26px -14px rgba(11,33,64,.55)}
.filterbar form.chips{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
/* el seg activo trae inline background:var(--ink) → lo re-mapeamos a navy */
.filterbar .seg{--ink:var(--navy);background:#fff;border-color:#fff!important;border-radius:10px!important;padding:3px;box-shadow:0 4px 12px -6px rgba(11,33,64,.5)}
.filterbar .seg .chip{border-radius:8px!important;padding:8px 15px;font-weight:700;font-size:13.5px;color:var(--muted);background:transparent;cursor:pointer;transition:.15s}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 14px;font-family:inherit;font-weight:600;font-size:14px;color:var(--ink);cursor:pointer;outline:none}
.filterbar input.chip{min-width:220px;box-shadow:0 4px 12px -6px rgba(11,33,64,.5);border-color:#fff}
.filterbar input.chip::placeholder{color:var(--muted)}
.filterbar input.chip:focus{border-color:#8fb4e8;box-shadow:0 0 0 3px rgba(143,180,232,.35)}
/* botón Buscar sobre navy → blanco con texto navy */
.filterbar .btn-blue{background:#fff;color:var(--navy);box-shadow:0 4px 12px -6px rgba(11,33,64,.5)}
.filterbar .btn-blue:hover{background:#eef3fa}
.filterbar .btn-out{background:transparent;color:#cddcf0;border-color:rgba(255,255,255,.35)}
.filterbar .btn-out:hover{color:#fff;border-color:#fff}

/* breadcrumb */
.crumb,.crumbs{font-size:13px;color:var(--muted);padding:14px 0 4px}
.crumb a:hover,.crumbs a:hover{color:var(--navy)}
.crumb b{color:var(--navy);font-weight:700}

/* cabecera de zona */
.zonehead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin:10px 0 8px}
.zonehead h1{font-size:clamp(1.45rem,3vw,1.9rem);font-weight:800;letter-spacing:-.02em}
.zonehead .stat{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 16px;text-align:right;box-shadow:0 1px 2px rgba(14,27,42,.05)}
.zonehead .stat b{font-family:var(--font-display);font-size:22px;font-weight:800;color:var(--navy);display:block;font-variant-numeric:tabular-nums}
.zonehead .stat span{font-size:12px;color:var(--muted)}
.intro{color:var(--body);font-size:14.5px;line-height:1.7;max-width:820px;margin-bottom:20px}

/* espacio bajo la grilla de resultados */
.wrap > .grid{margin-bottom:8px}

/* paginación */
.pager{display:flex;gap:8px;justify-content:center;align-items:center;margin:30px 0 44px;flex-wrap:wrap}
.pager a{min-width:40px;height:40px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:14px;font-weight:700;color:var(--body);transition:.15s}
.pager a:hover{border-color:var(--navy);color:var(--navy)}
.pager a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.pager a.on:hover{color:#fff}

/* ============================================================
   FICHA (bodydetail.tpl.php)
   ============================================================ */
.fwrap{display:grid;grid-template-columns:minmax(0,1fr) 344px;gap:26px;align-items:start;padding-bottom:8px}

/* galería */
.gallery{display:grid;grid-template-columns:2fr 1fr;gap:10px;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}
.gallery .big{aspect-ratio:4/3;overflow:hidden;background:#e9eef3}
.gallery .big img{width:100%;height:100%;object-fit:cover}
.gallery .col{display:grid;grid-template-rows:1fr 1fr;gap:10px}
.gallery .col .t{overflow:hidden;position:relative;background:#e9eef3}
.gallery .col .t img{width:100%;height:100%;object-fit:cover}
.gallery .more{position:absolute;inset:0;background:rgba(14,27,42,.5);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px}

/* banda de precio */
.pricebar{margin-top:20px}
.pricebar .pr{font-family:var(--font-display);font-size:clamp(1.9rem,4vw,2.5rem);font-weight:800;color:var(--navy);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.pricebar .sub{display:flex;gap:12px;align-items:center;margin-top:6px;flex-wrap:wrap}
.pricebar .m2t{background:#eaf0f8;border:1px solid #d3e0f0;color:var(--navy);font-weight:800;padding:6px 13px;border-radius:99px;font-size:13px;font-variant-numeric:tabular-nums}
.pricebar .lo{color:var(--muted);font-size:14.5px}
.pricebar .vs{color:var(--wa);font-weight:700;font-size:13px}

/* métricas clave */
.specs{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;border:0;padding:0;margin:18px 0 22px}
.specs .s{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:13px 14px;font-size:14px}
.specs .s b{display:block;font-family:var(--font-display);font-size:20px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.specs .s span{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}

/* descripción */
.desc{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 2px rgba(14,27,42,.05);padding:22px 24px;font-size:15.5px;line-height:1.7;color:var(--body)}
.desc h3{font-size:18px;font-weight:800;margin:0 0 10px;color:var(--ink)}
.desc p{margin-bottom:12px}

/* tour en video */
.vtour{margin:16px 0 0}
.vtour .vfacade,.vtour iframe{width:100%;aspect-ratio:16/9;border-radius:var(--r);display:block}
.vtour .vfacade{position:relative;background:var(--navy-deep) center/cover no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);overflow:hidden}
.vtour .vfacade::after{content:'';position:absolute;inset:0;background:rgba(8,20,38,.35);border-radius:var(--r)}
.vtour .vplay{position:relative;z-index:1;width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.94);color:var(--navy);display:grid;place-items:center;font-size:24px;padding-left:5px;box-shadow:0 10px 26px -8px rgba(11,33,64,.6)}
.vtour .vlbl{position:absolute;bottom:12px;left:14px;z-index:1;color:#fff;font-weight:700;text-shadow:0 1px 4px rgba(0,0,0,.5)}

/* calculadora de hipoteca */
.calc{display:grid;grid-template-columns:1fr 320px;gap:22px;align-items:start;background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 2px rgba(14,27,42,.05);padding:20px 22px}
.calc .panel{background:linear-gradient(160deg,var(--navy),var(--navy-deep));color:#fff;border-radius:12px;padding:22px}
.calc .panel .big{font-family:var(--font-display);font-size:38px;font-weight:700;font-variant-numeric:tabular-nums}
.calc .panel .big small{font-size:15px;color:#9db6d8;font-family:var(--font-body)}
.calc .panel .row{display:flex;justify-content:space-between;border-top:1px solid rgba(255,255,255,.14);padding:11px 0;font-size:14px}
.calc .field{margin-bottom:16px}
.calc .field .lab{display:flex;justify-content:space-between;font-weight:700;margin-bottom:8px;font-size:14px;color:var(--ink)}
.calc .field .lab b{color:var(--navy);font-variant-numeric:tabular-nums}
.calc .field input[type=range]{width:100%;accent-color:var(--navy)}

/* sidebar de contacto sticky */
.agent{position:sticky;top:84px;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:20px;background:var(--bg)}
.agent .who{display:flex;align-items:center;gap:12px}
.agent .av{width:52px;height:52px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:18px}
.agent .who b{font-size:15px;color:var(--ink)}
.agent .who span{font-size:12.5px;color:var(--muted)}
.agent .verif{color:var(--wa);font-size:12px;font-weight:700}
.agent .btn{display:block;width:100%;box-sizing:border-box;text-align:center;text-decoration:none;margin:14px 0 0;padding:13px;font-size:14.5px}
.agent .btn-wa{margin:14px 0 0}

/* mapa placeholder (clase .map por si se usa) */
.map{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;height:300px;background:
  repeating-linear-gradient(0deg,#eef1f5 0 39px,#e8edf3 39px 40px),
  repeating-linear-gradient(90deg,#eef1f5 0 39px,#e8edf3 39px 40px);position:relative}
.map .pin{position:absolute;background:#fff;border:2px solid var(--navy);color:var(--ink);font-weight:800;font-size:12px;padding:4px 8px;border-radius:18px;box-shadow:var(--shadow)}
.map .pin.me{background:var(--navy);color:#fff}

/* Lightbox de fotos */
.lb{position:fixed;inset:0;z-index:2000;background:rgba(8,20,38,.94);display:flex;align-items:center;justify-content:center}
.lb-img{max-width:92vw;max-height:86vh;border-radius:8px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.lb-x{position:absolute;top:16px;right:20px;background:none;border:0;color:#fff;font-size:38px;line-height:1;cursor:pointer}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.12);border:0;color:#fff;font-size:26px;width:50px;height:50px;border-radius:50%;cursor:pointer}
.lb-prev{left:18px}.lb-next{right:18px}
.lb-count{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#fff;font-size:14px;font-weight:600}

/* ============================================================
   GUÍAS / OPERACIONES (bodyoperaciones.tpl.php — markup legacy
   olnewv2: .sections .container-sections .grid > a > .cell)
   ============================================================ */
.sections{max-width:1240px;margin:0 auto;padding:10px 20px 0}
.sections .breadcrumbs{list-style:none;display:flex;gap:8px;padding:10px 0 4px;margin:0;font-size:13px;color:var(--muted);flex-wrap:wrap}
.sections .breadcrumbs a:hover{color:var(--navy)}
.sections .nav-bar h1{font-size:22px;margin:6px 0 0}
.container-sections{max-width:1240px;margin:0 auto}
h2.title-ventas,h2.title-alquileres{font-family:var(--font-display);font-size:clamp(1.35rem,2.6vw,1.8rem);font-weight:800;letter-spacing:-.02em;color:var(--ink);margin:18px 0 16px}

/* mosaico de categorías: los <a> pasan a display:contents para que
   las .cell participen del grid y respeten w-33 / w-66 / w-100 */
.container-sections .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:8px}
.container-sections .grid>a{display:contents}
.container-sections .cell{position:relative;border-radius:var(--r);overflow:hidden;min-height:230px;box-shadow:0 1px 2px rgba(14,27,42,.06)}
.container-sections .cell.w-66{grid-column:span 2}
.container-sections .cell.w-100{grid-column:1/-1}
.container-sections .cell .bounds,.container-sections .cell .padding{position:absolute;inset:0}
.container-sections .cell .background{position:absolute;inset:0}
.container-sections .cell .background .image{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.container-sections .cell:hover .background .image{transform:scale(1.04)}
.container-sections .cell .darken{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,33,64,.06) 30%,rgba(11,33,64,.72))}
.container-sections .cell .content{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:16px;color:#fff}
.container-sections .cell .content h4{color:#fff;font-size:17px;font-weight:700;letter-spacing:-.01em;text-shadow:0 1px 8px rgba(0,0,0,.4)}
.container-sections .cell .content .middle,.container-sections .cell .content .top,.container-sections .cell .content .bottom-center{position:relative}
.container-sections .cell .content .top{margin-bottom:auto}
.price-image-home{display:inline-block;background:rgba(255,255,255,.94);color:var(--navy);font-weight:800;font-size:13px;border-radius:8px;padding:4px 10px;margin:4px 6px 0 0;font-variant-numeric:tabular-nums}

/* banda de video destacado */
.sections-videos{position:relative;background-size:cover;background-position:center;border-radius:var(--r);overflow:hidden;max-width:1240px;margin:26px auto}
.sections-videos::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,33,64,.25),rgba(11,33,64,.72))}
.sections-videos .align{position:relative;min-height:380px;display:flex;align-items:center;justify-content:center}
.sections-videos .bounds{text-align:center;padding:30px}
.sections-videos img.play{width:72px;height:72px;margin:0 auto 14px;filter:drop-shadow(0 8px 20px rgba(0,0,0,.45));transition:transform .2s}
.sections-videos a.popup-youtube:hover img.play{transform:scale(1.08)}
.sections-videos h2,.sections-videos h2 a{color:#fff;font-size:clamp(1.2rem,2.6vw,1.7rem);font-weight:700;text-shadow:0 2px 14px rgba(0,0,0,.5)}

/* banda-enlace roja inline (#ff0000) → navy de marca (override de inline) */
section.sections[style*="ff0000"]{background:linear-gradient(120deg,var(--navy),#1c4a86)!important;border-radius:var(--r);max-width:1240px;margin:22px auto;overflow:hidden}
section.sections[style*="ff0000"] h2{padding:16px 20px!important;font-size:1.15rem}

/* búsqueda avanzada (fondo inline #224086 → navy) */
.search_tool [style*="224086"],div[style*="224086"]{background:var(--navy)!important;border-radius:var(--r)}
.search_tool{border-radius:var(--r);overflow:hidden}
.search_tool .fields .row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.search_tool .fields .cell{flex:1;min-width:160px}
.search_tool select.search-form,.search_tool input.inputQuery{width:100%;height:46px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-family:inherit;font-size:14px;font-weight:500;color:var(--ink);background:#fff;outline:none}
.search_tool .button.submit{background:var(--red);color:#fff;border:0;border-radius:10px;font-family:inherit;font-weight:700;font-size:14.5px;padding:12px 26px;cursor:pointer}
.search_tool .button.submit:hover{background:var(--red-deep)}
.search_tool .search{padding:4px 10px 14px}

/* ============================================================
   FOOTER (foot.tpl.php: footer.foot > .wrap > .cols / .bn)
   Mockup: footer claro sobre blanco
   ============================================================ */
.foot{background:#fff;color:var(--muted);margin-top:34px;padding:38px 0 22px;border-top:1px solid var(--line)}
.foot .cols{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:28px}
.foot h4{font-family:var(--font-display);color:var(--ink);font-size:14px;margin-bottom:12px}
.foot a{display:block;color:var(--muted);font-size:13.5px;padding:3px 0;transition:color .15s}
.foot a:hover{color:var(--navy)}
.foot p{font-size:13px;color:var(--muted);max-width:280px}
.foot .badge{display:inline-block;border:1px solid var(--line);background:var(--soft);border-radius:8px;padding:6px 10px;font-size:11px;font-weight:700;color:var(--body);margin-top:12px}
.foot .bn{border-top:1px solid var(--line);margin-top:26px;padding-top:16px;font-size:12.5px;text-align:center;color:var(--muted)}
/* el logo del footer trae filter inline (invertido para fondo oscuro);
   en footer claro lo devolvemos a color */
.foot .logo img{filter:none!important}

/* ============================================================
   WhatsApp FAB
   ============================================================ */
.wafab{position:fixed;right:18px;bottom:18px;z-index:120;background:var(--wa);color:#fff;border-radius:30px;padding:13px 18px;font-weight:700;box-shadow:0 10px 26px -8px rgba(31,175,84,.7);display:flex;align-items:center;gap:9px;transition:transform .2s}
.wafab:hover{transform:scale(1.04)}
.wafab .ic{width:20px;height:20px;border-radius:50%;background:#fff;color:var(--wa);display:grid;place-items:center;font-size:13px;font-weight:900}
.wa-float{position:fixed;right:20px;bottom:20px;width:56px;height:56px;border-radius:50%;background:var(--wa);color:#fff;display:grid;place-items:center;box-shadow:0 10px 26px -8px rgba(31,175,84,.7);z-index:200;font-size:26px;transition:transform .2s}
.wa-float:hover{transform:scale(1.06)}

/* ============================================================
   Páginas de módulos default (login/registro/recuperar)
   — se conserva el layout centrado que ya funcionaba
   ============================================================ */
.align.w-1140{max-width:1140px;margin:0 auto;padding:16px 20px 48px}
#content{display:block}
.blocksleft,.blocksright,.block_foot{display:none}
.blockscenter{max-width:460px;margin:24px auto;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:28px;box-shadow:var(--shadow)}
.blockscenter .block{margin:0}
.blockscenter input[type=text],.blockscenter input[type=password],.blockscenter input[type=email]{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:10px;margin:6px 0 14px;box-sizing:border-box;font-family:inherit;font-size:14px}
.blockscenter input[type=text]:focus,.blockscenter input[type=password]:focus,.blockscenter input[type=email]:focus{border-color:var(--navy);outline:none;box-shadow:0 0 0 3px rgba(18,50,92,.13)}
.blockscenter input[type=submit],.blockscenter button{background:var(--navy);color:#fff;border:0;border-radius:10px;padding:11px 18px;font-weight:700;font-family:inherit;cursor:pointer}
.blockscenter input[type=submit]:hover,.blockscenter button:hover{background:var(--navy-deep)}
.blockscenter table{width:100%}

/* ============================================================
   Responsive
   ============================================================ */
@media(max-width:1000px){
  .fwrap{grid-template-columns:1fr}
  .agent{position:static}
  .calc{grid-template-columns:1fr}
  .container-sections .grid{grid-template-columns:repeat(2,1fr)}
  .container-sections .cell.w-66{grid-column:span 2}
  .foot .cols{grid-template-columns:1fr 1fr}
}
@media(max-width:900px){
  .nav{display:none}
  .guides{grid-template-columns:1fr 1fr}
  .searchbox{grid-template-columns:1fr}
  .searchbox .seg{justify-content:center}
  .searchbox input,.searchbox select{width:100%}
  .hwrap{padding-bottom:66px}
  .filterbar{top:64px}
  .gallery{grid-template-columns:1fr}
  .gallery .col{grid-template-rows:none;grid-template-columns:1fr 1fr}
}
@media(max-width:640px){
  .grid,.grid.g3{grid-template-columns:1fr}
  .container-sections .grid{grid-template-columns:1fr}
  .container-sections .cell.w-66,.container-sections .cell.w-100{grid-column:auto}
  .container-sections .cell{min-height:200px}
  .guides{grid-template-columns:1fr}
  .foot .cols{grid-template-columns:1fr}
  .zonehead .stat{width:100%;text-align:left}
  .m2{border-radius:16px}
  /* FAB solo-icono en móvil para no tapar contenido */
  .wafab{padding:0;width:56px;height:56px;border-radius:50%;justify-content:center;gap:0;bottom:16px;right:16px}
  .wafab .lbl{display:none}
  .wafab .ic{width:30px;height:30px;font-size:18px}
  body{padding-bottom:84px}
  .lb-nav{width:42px;height:42px;font-size:22px}
  .specs{grid-template-columns:repeat(2,1fr)}
  .filterbar input.chip{min-width:0;flex:1 1 100%}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
}

/* TEMP: ocultar placeholders de anuncio hasta colocar AdSense real
   (misma regla que el CSS anterior — quitar cuando entren los bloques) */
.ad{display:none!important}

/* ============================================================
   OPT2 F3 · Guía: progreso de lectura + TOC scroll-spy
   (aditivo; tokens del :root vivo)
   ============================================================ */
.readprog{position:fixed;top:0;left:0;height:3px;background:var(--red);width:0;z-index:120;transition:width .1s linear}
.gtoc{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px 16px;margin:0 0 22px}
.gtoc h4{font-family:var(--font-display);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.gtoc a{display:flex;align-items:baseline;gap:8px;font-size:14px;font-weight:600;color:var(--body);padding:6px 10px;border-radius:8px;transition:background .15s,color .15s}
.gtoc a:hover{background:var(--soft);color:var(--ink)}
.gtoc a.on{color:var(--navy);background:var(--soft)}
.gtoc a .pct{font-size:9px;color:var(--line);flex:0 0 auto;line-height:1.6}
.gtoc a.on .pct{color:var(--navy)}
@media(prefers-reduced-motion:reduce){.readprog{transition:none}}

/* ============================================================
   OPT2 · Home: indicador "en vivo" + conteo + dual-range de precio
   (aditivo; tokens OPT2 inlineados; dual-range cablea a pi/pf reales)
   ============================================================ */
.hlive{display:inline-flex;align-items:center;gap:8px;color:#dbe7f7;font-size:13px;font-weight:600;letter-spacing:.01em;margin-top:14px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.22);padding:5px 12px;border-radius:100px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.hlive .live{width:8px;height:8px;border-radius:50%;background:var(--wa);box-shadow:0 0 0 0 rgba(31,175,84,.6);animation:cenpulse 2.4s cubic-bezier(.22,1,.36,1) infinite}
@keyframes cenpulse{0%{box-shadow:0 0 0 0 rgba(31,175,84,.5)}70%{box-shadow:0 0 0 9px rgba(31,175,84,0)}100%{box-shadow:0 0 0 0 rgba(31,175,84,0)}}
@media(prefers-reduced-motion:reduce){.hlive .live{animation:none}}
/* Price popover */
.pricepop{position:relative}
.pricebtn{width:100%;height:48px;text-align:left;border:1px solid var(--line);border-radius:10px;background:var(--bg);padding:18px 12px 5px;font-family:inherit;font-size:14px;font-weight:600;color:var(--ink);cursor:pointer;position:relative;white-space:nowrap}
.pricebtn .pl{position:absolute;left:12px;top:6px;font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.pricebtn:focus-visible{border-color:var(--navy);box-shadow:0 0 0 3px rgba(18,50,92,.13);outline:none}
.pricepanel{position:absolute;top:calc(100% + 8px);right:0;width:320px;max-width:86vw;background:var(--bg);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 34px rgba(14,27,42,.18);padding:18px;z-index:80;display:none}
.pricepanel.open{display:block;animation:cenpop .22s cubic-bezier(.22,1,.36,1)}
@keyframes cenpop{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.pricepanel .rr{margin:6px 0 14px}
.dual{position:relative;height:34px}
.dual .track{position:absolute;top:15px;left:0;right:0;height:4px;border-radius:4px;background:var(--line)}
.dual .fill{position:absolute;top:15px;height:4px;border-radius:4px;background:var(--navy)}
.dual input[type=range]{position:absolute;top:0;left:0;width:100%;height:34px;margin:0;background:transparent;appearance:none;-webkit-appearance:none;pointer-events:none}
.dual input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--navy);box-shadow:0 1px 2px rgba(14,27,42,.2);cursor:grab}
.dual input[type=range]::-moz-range-thumb{pointer-events:auto;width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--navy);cursor:grab}
.pricepanel .rv{display:flex;justify-content:space-between;font-size:14px;font-weight:700;color:var(--ink)}
.pricepanel .rv small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
@media(max-width:900px){.pricepanel{left:0;right:auto}}
/* Listado: empty state */
.emptybox{grid-column:1/-1;text-align:center;padding:56px 20px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 2px rgba(14,27,42,.05)}
.emptybox .ic{font-size:40px;line-height:1;color:var(--navy);margin-bottom:12px}
.emptybox h3{font-family:var(--font-display);font-size:20px;color:var(--ink);margin-bottom:6px}
.emptybox p{color:var(--muted);font-size:15px;margin-bottom:18px}

/* ============================================================
   OPT2 · Ficha: comparador $/m² vs promedio de zona (superficie de dato navy)
   ============================================================ */
.cmpm2{background:linear-gradient(135deg,#163a68 0%,#0b2140 100%);border-radius:14px;color:#fff;padding:20px 22px;position:relative;overflow:hidden;margin:22px 0}
.cmpm2 h2{color:#fff;font-size:17px;margin-bottom:4px}
.cmpm2 .sub{color:#cddcf0;font-size:13px;margin-bottom:16px;max-width:52ch}
.cmpm2 .gauge{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:center}
.cmpm2 .gaugevals{display:flex;gap:26px;flex-wrap:wrap}
.cmpm2 .gv .k{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#a8bcd9}
.cmpm2 .gv .v{font-family:var(--font-display);font-size:24px;font-weight:800;margin-top:2px;color:#fff}
.cmpm2 .gv .v small{font-size:12px;font-weight:600;color:#a8bcd9}
.cmpm2 .gmeter{position:relative;height:12px;border-radius:8px;background:rgba(255,255,255,.14);margin-top:6px}
.cmpm2 .gmeter .avg{position:absolute;top:-5px;bottom:-5px;width:2px;background:#fff}
.cmpm2 .gmeter .avg::after{content:"prom.";position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:700;color:#a8bcd9;white-space:nowrap}
.cmpm2 .gmeter .you{position:absolute;top:0;bottom:0;left:0;border-radius:8px;background:linear-gradient(90deg,#3f74bf,#8fb4e8)}
.cmpm2 .gbadge{display:inline-flex;align-items:center;gap:7px;background:rgba(31,175,84,.16);border:1px solid rgba(31,175,84,.5);color:#c9f5db;border-radius:99px;padding:7px 14px;font-size:13px;font-weight:700}
.cmpm2 .gbadge.over{background:rgba(255,196,87,.16);border-color:rgba(255,196,87,.55);color:#ffdf9e}
@media(max-width:640px){.cmpm2 .gauge{grid-template-columns:1fr}}
.cmpm2 .gbadge.neu{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.28);color:#dbe7f7}
