*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --ac:#2563eb;--ac-h:#1d4ed8;--ac-light:#eff6ff;
  --tx:#0f172a;--tx2:#475569;--tx3:#717c8b;
  --bg:#f1f5f9;--sur:#ffffff;--brd:#e2e8f0;
  --r:12px;--rs:7px;
  --max:1200px;--pad:28px;
  --f:16px;--fsm:14px;--fxs:12px;--fxxs:11px;
}
body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--tx);font-size:var(--f);line-height:1.65}
a{color:var(--ac);text-decoration:none}
img{max-width:100%;height:auto}

/* ── HEADER ── */
.site-header{background:var(--tx);width:100%;position:sticky;top:0;z-index:100}
.hdr{max-width:var(--max);margin:0 auto;padding:0 var(--pad);height:64px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0}
.logo-ic{width:36px;height:36px;background:var(--ac);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.logo-ic svg{width:19px;height:19px;fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.logo-tx{font-size:18px;font-weight:700;color:#fff;letter-spacing:-.4px;white-space:nowrap}
.logo-tx span{color:#60a5fa}
.hdr-search{display:flex;width:100%;max-width:440px;margin:0 auto}
.hdr-search input{flex:1;padding:9px 16px;border:none;border-radius:var(--rs) 0 0 var(--rs);font-size:var(--fsm);background:rgba(255,255,255,.1);color:#fff;outline:none;transition:background .15s}
.hdr-search input::placeholder{color:rgba(255,255,255,.38)}
.hdr-search input:focus{background:rgba(255,255,255,.16)}
.hdr-search button{padding:9px 18px;background:var(--ac);color:#fff;border:none;border-radius:0 var(--rs) var(--rs) 0;font-size:var(--fsm);font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s}
.hdr-search button:hover{background:var(--ac-h)}
.hdr-nav{display:flex;align-items:center;gap:2px}
.hdr-nav a{font-size:var(--fsm);color:rgba(255,255,255,.6);padding:6px 13px;border-radius:6px;transition:background .15s,color .15s;white-space:nowrap}
.hdr-nav a:hover{background:rgba(255,255,255,.1);color:#fff}

/* ── BREADCRUMB ── */
.bc-wrap{background:var(--sur);border-bottom:1px solid var(--brd);overflow:hidden}
.bc{max-width:var(--max);margin:0 auto;padding:10px var(--pad);font-size:var(--fxs);color:var(--tx3);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.bc a{color:var(--tx2)}.bc a:hover{color:var(--ac)}

/* ── PAGE LAYOUT ── */
.pg{max-width:var(--max);margin:0 auto;padding:20px var(--pad);display:grid;grid-template-columns:1fr 308px;gap:20px;align-items:start}

/* ── ADS ── */
.ad-full{background:var(--sur);border:1px dashed var(--brd);border-radius:var(--r);padding:10px;text-align:center;margin-bottom:18px;grid-column:1/-1}
.ad-lbl{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
.ad-slot{background:var(--bg);border-radius:var(--rs);height:94px;display:flex;align-items:center;justify-content:center;font-size:var(--fxs);color:var(--tx3)}
.ad-mid{background:var(--sur);border:1px dashed var(--brd);border-radius:var(--r);padding:10px;text-align:center;margin-bottom:18px}
.ad-sq{background:var(--bg);border-radius:var(--rs);height:256px;display:flex;align-items:center;justify-content:center;font-size:var(--fxs);color:var(--tx3)}
.ad-desktop{display:block}
.ad-mobile{display:none}

/* ── CARDS ── */
.card{background:var(--sur);border:1px solid var(--brd);border-radius:var(--r);margin-bottom:18px;overflow:hidden}
.ch{padding:15px 20px;border-bottom:1px solid var(--brd);display:flex;align-items:center;justify-content:space-between}
.ch-l{display:flex;align-items:center;gap:9px}
.ch-ic{width:20px;height:20px;color:var(--ac);flex-shrink:0}
.ch-t{font-size:var(--f);font-weight:600;color:var(--tx)}
.ch-s{font-size:var(--fxs);color:var(--tx3);margin-top:1px}
.bdg{background:var(--ac-light);color:#1e40af;font-size:var(--fxxs);font-weight:600;padding:3px 10px;border-radius:20px}

/* ── HERO ── */
.hero-p{padding:20px 22px 0}
.cp-pill{display:inline-flex;align-items:center;gap:6px;background:var(--ac-light);color:#1e40af;font-size:var(--fxxs);font-weight:600;padding:4px 12px;border-radius:20px;margin-bottom:10px}
.cp-pill svg{width:12px;height:12px;stroke:#1e40af;fill:none;stroke-width:2.2}
h1{font-size:28px;font-weight:700;color:var(--tx);line-height:1.2;margin-bottom:6px}
.hero-sub{font-size:var(--fsm);color:var(--tx2);margin-bottom:10px}
.intro-text{font-size:var(--fsm);color:var(--tx2);line-height:1.75;margin-bottom:18px;padding:12px 14px;background:var(--bg);border-radius:var(--rs);border-left:3px solid var(--ac)}
.stats-s{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--brd)}
.st{padding:13px 18px;border-right:1px solid var(--brd)}
.st:last-child{border-right:none}
.st-l{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.st-v{font-size:var(--fsm);font-weight:600;color:var(--tx)}

/* ── MAP ── */
.map-a{background:#dde5f0;height:230px;overflow:hidden;max-width:100%}
.map-a iframe{display:block;width:100%;height:100%;border:none;max-width:100%}
.map-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--tx3);font-size:var(--fsm)}
.map-acts{padding:10px 16px;display:flex;gap:8px;border-top:1px solid var(--brd);flex-wrap:wrap}
.map-btn{font-size:var(--fxs);color:var(--ac);padding:5px 13px;border:1px solid var(--brd);border-radius:20px;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}
.map-btn:hover{background:var(--ac-light);border-color:var(--ac)}

/* ── INFO ROWS ── */
.info-rws{padding:4px 20px}
.ir{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--brd);font-size:var(--fsm);gap:12px}
.ir:last-child{border-bottom:none}
.ik{color:var(--tx2)}
.iv{font-weight:500;color:var(--tx);text-align:right}
.cp-b{background:var(--ac-light);color:#1e40af;font-size:var(--fsm);font-weight:600;padding:2px 10px;border-radius:20px}

/* ── STREETS TABLE ── */
.tbl-s{padding:10px 16px;border-bottom:1px solid var(--brd)}
.tbl-s input{width:100%;padding:8px 13px;border:1px solid var(--brd);border-radius:var(--rs);font-size:var(--fsm);background:var(--bg);color:var(--tx);outline:none}
.tbl-s input:focus{border-color:var(--ac)}
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;min-width:0}
thead tr{background:var(--bg)}
th{padding:9px 16px;font-size:var(--fxxs);font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em;text-align:left;border-bottom:1px solid var(--brd);white-space:nowrap}
th.c{text-align:center}
td{padding:10px 16px;border-bottom:1px solid var(--brd);font-size:var(--fsm);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:nth-child(even) td{background:#fafbfc}
tr:hover td{background:#f0f5ff}
.vn{font-weight:500;color:var(--tx)}
.vt{font-size:var(--fxxs);color:var(--tx3);margin-left:4px}
.tramo{font-size:var(--fxs);color:var(--tx2);text-align:center;display:block}
.tramo strong{color:var(--tx);font-weight:600}
.tramo-t{color:#166534;font-weight:500;text-align:center;display:block;font-size:var(--fxs)}
.sn-b{display:inline-block;background:#fef9ec;color:#854d0e;font-size:10px;font-weight:600;padding:2px 7px;border-radius:8px}
.tbl-note{padding:9px 16px;background:var(--bg);border-top:1px solid var(--brd);font-size:var(--fxxs);color:var(--tx3);display:flex;align-items:center;gap:6px}

/* ── NEARBY ── */
.nb-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:16px 20px}
.nb{background:var(--bg);border:1px solid var(--brd);border-radius:var(--rs);padding:12px;text-align:center;cursor:pointer;transition:border-color .15s;display:block}
.nb:hover{border-color:var(--ac)}
.nb-cp{font-size:17px;font-weight:700;color:var(--ac)}
.nb-nm{font-size:var(--fxxs);color:var(--tx3);margin-top:3px}

/* ── VALORACIONES ── */
.val-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:var(--rs);border:1px solid var(--brd);background:var(--sur);font-size:var(--fsm);font-weight:500;cursor:pointer;transition:all .15s}
.val-pos{color:#166534}.val-pos:hover{background:#f0fdf4;border-color:#86efac}
.val-neg{color:#7f1d1d}.val-neg:hover{background:#fef2f2;border-color:#fca5a5}
.val-count{background:var(--bg);color:var(--tx3);font-size:var(--fxxs);padding:1px 7px;border-radius:10px;font-weight:400}

/* ── SIDEBAR ── */
.sb-card{background:var(--sur);border:1px solid var(--brd);border-radius:var(--r);margin-bottom:16px;overflow:hidden}
.sb-h{padding:13px 16px;border-bottom:1px solid var(--brd);font-size:var(--fsm);font-weight:600;color:var(--tx)}
.sb-ad{background:var(--bg);height:256px;display:flex;align-items:center;justify-content:center;font-size:var(--fxs);color:var(--tx3);border:1px dashed var(--brd);border-radius:var(--rs);margin:12px}
.sb-lks{padding:4px 16px 10px}
.sb-lk{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--brd);font-size:var(--fsm);color:var(--tx2);transition:color .15s}
.sb-lk:last-child{border-bottom:none}
.sb-lk:hover{color:var(--ac)}
.sb-lk span{color:var(--tx3);font-size:var(--fxs)}

/* ── FOOTER ── */
.site-footer{background:var(--tx);width:100%;margin-top:12px}
.ft-top{max-width:var(--max);margin:0 auto;padding:44px var(--pad) 32px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px}
.ft-logo{display:flex;align-items:center;gap:9px;margin-bottom:13px}
.ft-logo-ic{width:33px;height:33px;background:var(--ac);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ft-logo-ic svg{width:17px;height:17px;fill:none;stroke:#fff;stroke-width:2.2}
.ft-logo-tx{font-size:17px;font-weight:700;color:#fff;letter-spacing:-.3px}
.ft-logo-tx span{color:#60a5fa}
.ft-desc{font-size:var(--fxs);color:#64748b;line-height:1.75;max-width:240px}
.ft-col-t{font-size:var(--fxxs);font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.07em;margin-bottom:14px}
.ft-links{list-style:none}
.ft-links li{margin-bottom:10px}
.ft-links a{font-size:var(--fsm);color:#94a3b8;transition:color .15s}
.ft-links a:hover{color:#fff}
.ft-cta{display:inline-flex;align-items:center;gap:7px;margin-top:4px;padding:10px 18px;background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:var(--rs);font-size:var(--fsm);color:#fff;cursor:pointer;transition:background .15s,border-color .15s;text-decoration:none}
.ft-cta:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.3)}
.ft-cta svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
.ft-bot{max-width:var(--max);margin:0 auto;padding:16px var(--pad);border-top:1px solid rgba(255,255,255,.07);display:flex;align-items:center;justify-content:space-between;font-size:var(--fxs);color:#475569;flex-wrap:wrap;gap:10px}
.ft-bot a{color:#475569}.ft-bot a:hover{color:#94a3b8}
.ft-bot-lks{display:flex;gap:20px;flex-wrap:wrap}

/* ══ RESPONSIVE ══ */
@media(max-width:1024px){
  :root{--pad:20px}
  .ft-top{grid-template-columns:1fr 1fr;gap:28px}
}
/* Hamburguesa — oculta en escritorio */
.hdr-ham{display:none}
/* En home el buscador del header no se muestra — el hero ya tiene uno */
.page-home .hdr-search{display:none !important}
.page-home .hdr{grid-template-columns:1fr auto}

@media (min-width: 768px) {
  .page-home .hdr-search { display: none !important; }
  .page-home .hdr { grid-template-columns: 1fr auto; }
}

@media(max-width:768px){
  :root{--pad:16px}

  /* Bug 2: header en 2 filas — fila 1: logo + hamburguesa / fila 2: buscador */
  .hdr{
    grid-template-columns:1fr auto;
    grid-template-rows:auto auto;
    height:auto;
    padding:10px var(--pad);
    gap:8px 0;
  }
  .logo{grid-column:1;grid-row:1}
  .hdr-search{grid-column:1/-1;grid-row:2;max-width:100%;margin:0;min-width:0;width:100%}
  .hdr-search input{min-width:0;width:100%}

  /* Hamburguesa visible en móvil */
  .hdr-ham{
    grid-column:2;grid-row:1;
    display:flex;flex-direction:column;justify-content:center;gap:5px;
    background:none;border:none;cursor:pointer;padding:6px 4px;
    align-self:center;
  }
  .hdr-ham span{display:block;width:22px;height:2px;background:#fff;border-radius:1px;transition:opacity .15s}

  /* Menú nav desplegado por hamburguesa */
  .hdr-nav{
    display:none;
    position:absolute;top:100%;left:0;right:0;
    background:var(--tx);
    padding:4px var(--pad) 14px;
    border-top:1px solid rgba(255,255,255,.1);
    z-index:99;
  }
  .hdr-nav.hdr-nav-open{display:flex;flex-direction:column}
  .hdr-nav.hdr-nav-open a{
    padding:11px 0;
    border-bottom:1px solid rgba(255,255,255,.08);
    font-size:var(--f);
    color:rgba(255,255,255,.85);
  }
  .hdr-nav.hdr-nav-open a:last-child{border-bottom:none}

  /* Bug 1: regla global movida arriba del media query */
  .page-home .hdr{grid-template-rows:auto}

  /* Mapa en móvil — height reducida y overflow controlado */
  .map-a{height:250px;overflow:hidden}
  .map-a iframe{width:100% !important;max-width:100%}
  .map-leaflet{height:200px}

  /* Breadcrumb móvil */
  .bc{padding:8px var(--pad);gap:4px}

  /* Stats — 2 columnas en móvil (3 es demasiado estrecho) */
  .stats-s{grid-template-columns:1fr 1fr}
  .st:last-child{grid-column:1/-1;border-right:none;border-top:1px solid var(--brd)}

  /* Prevenir overflow horizontal en toda la página */
  .pg{grid-template-columns:1fr;gap:0;overflow-x:hidden}
  h1{font-size:22px}
  .side{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .side .sb-card:last-child{grid-column:1/-1}
  .nb-grid{grid-template-columns:repeat(3,1fr)}
  .ft-top{grid-template-columns:1fr 1fr;gap:24px}
  .ad-desktop{display:none}
  .ad-mobile{display:block}
}
@media(max-width:480px){
  :root{--pad:14px}
  /* stats: ya en 2 columnas desde 768px */
  .nb-grid{grid-template-columns:repeat(2,1fr)}
  .side{grid-template-columns:1fr}
  .ft-top{grid-template-columns:1fr}
  .ft-bot{flex-direction:column;align-items:flex-start}
  .ft-bot-lks{gap:14px}
  .ir{flex-direction:column;align-items:flex-start;gap:3px}
  .iv{text-align:left}
  .map-acts{gap:6px}
  .val-btn{padding:8px 14px;font-size:var(--fxs)}
}

/* ══ ESTILOS ADICIONALES — provincia, municipio, búsqueda ══ */

/* Barra de filtro */
.filter-bar{padding:12px 20px;border-bottom:1px solid var(--brd);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.filter-bar input{flex:1;min-width:180px;padding:8px 13px;border:1px solid var(--brd);border-radius:var(--rs);font-size:var(--fsm);background:var(--bg);color:var(--tx);outline:none;font-family:inherit}
.filter-bar input:focus{border-color:var(--ac)}
.filter-count{font-size:var(--fxs);color:var(--tx3);white-space:nowrap}

/* Grid de CPs — 6 columnas */
.cp-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;padding:16px 20px}
.cp-card{background:var(--bg);border:1px solid var(--brd);border-radius:var(--rs);padding:10px 8px;text-align:center;display:block;transition:border-color .15s,background .15s;min-width:0}
.cp-card:hover{border-color:var(--ac);background:#f0f5ff}
.cp-card.capital{border-color:#c7d7fc;background:#f0f5ff}
.cp-num{font-size:15px;font-weight:700;color:var(--ac);display:block;margin-bottom:4px}
.cp-muni{font-size:11px;color:var(--tx2);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-tag{display:inline-block;font-size:9px;font-weight:600;padding:1px 5px;border-radius:5px;margin-top:4px;background:#dbeafe;color:#1e40af}

/* Paginación */
.pag-bar{padding:12px 20px;border-top:1px solid var(--brd);display:flex;align-items:center;justify-content:space-between;font-size:var(--fxs);color:var(--tx3);flex-wrap:wrap;gap:8px}
.pag{display:flex;gap:4px}
.pg-b{padding:5px 10px;border:1px solid var(--brd);border-radius:var(--rs);font-size:var(--fxs);color:var(--tx2);cursor:pointer;background:var(--sur);transition:all .15s;text-decoration:none;display:inline-block}
.pg-b:hover{border-color:var(--ac);color:var(--ac)}
.pg-b.on{background:var(--ac);color:#fff;border-color:var(--ac)}

/* Grid municipios — 3 columnas, cajitas grandes */
.muni-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px 20px}
.muni-card{background:var(--bg);border:1px solid var(--brd);border-radius:var(--r);padding:16px;display:block;transition:border-color .15s,background .15s}
.muni-card:hover{border-color:var(--ac);background:#f0f5ff}
.muni-name{font-size:var(--fsm);font-weight:600;color:var(--tx);margin-bottom:5px;display:block}
.muni-cps{font-size:var(--fxs);color:var(--tx3);display:block}
.muni-bar{height:3px;background:var(--brd);border-radius:2px;margin-top:10px;overflow:hidden}
.muni-fill{height:100%;background:var(--ac);border-radius:2px}

/* Grid municipios cercanos — 3 columnas */
.near-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px 20px}
.near-card{background:var(--bg);border:1px solid var(--brd);border-radius:var(--r);padding:14px 16px;display:block;transition:border-color .15s,background .15s}
.near-card:hover{border-color:var(--ac);background:#f0f5ff}
.near-name{font-size:var(--fsm);font-weight:600;color:var(--tx);display:block;margin-bottom:4px}
.near-prov{font-size:var(--fxs);color:var(--tx3);display:block;margin-bottom:8px}
.near-cps{display:flex;gap:4px;flex-wrap:wrap}
.near-cp{font-size:11px;background:var(--ac-light);color:#1e40af;padding:2px 7px;border-radius:5px;font-weight:500}

/* Mapa con Leaflet */
.map-leaflet{height:260px;border-radius:0;z-index:1}

/* Responsive adicional */
@media(max-width:1024px){
  .cp-grid{grid-template-columns:repeat(5,1fr)}
  .muni-grid{grid-template-columns:repeat(2,1fr)}
  .near-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:768px){
  .cp-grid{grid-template-columns:repeat(4,1fr)}
  .muni-grid{grid-template-columns:repeat(2,1fr)}
  .near-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:480px){
  .cp-grid{grid-template-columns:repeat(2,1fr);gap:6px;padding:12px 14px}
  .muni-grid{grid-template-columns:repeat(2,1fr);padding:12px 14px}
  .near-grid{grid-template-columns:1fr 1fr;padding:12px 14px}
}

/* Home — tamaños base (móvil) */
.home-h1 { font-size: 32px; }
.home-sub { font-size: 16px; }
.home-input { padding: 14px 20px; }
.home-btn { padding: 14px 24px; }
.stat-number { font-size: 28px; }

/* Home — tamaños desktop */
@media (min-width: 768px) {
  .page-home .hdr-search { display: none !important; }
  .page-home .hdr { grid-template-columns: 1fr auto; }
  .home-h1 { font-size: 42px; }
  .home-sub { font-size: 18px; }
  .home-input { padding: 18px 20px; }
  .home-btn { padding: 18px 24px; }
  .stat-number { font-size: 34px; }
}
