* { box-sizing: border-box; }
:root {
  --ink:#172033;
  --muted:#667085;
  --brand:#3e445e;
  --brand-dark:#2f3448;
  --line:#e4e7ec;
  --soft:#f7f8fb;
  --white:#fff;
  --focus:#175cd3;
}
html,body { margin:0; padding:0; font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif; color:var(--ink); background:var(--white); }
button,input { font:inherit; }
button { cursor:pointer; }
.header { background:var(--brand); color:#fff; position:sticky; top:0; z-index:20; box-shadow:0 2px 8px rgba(0,0,0,.14); }
.header .wrap { max-width:1180px; min-height:54px; margin:0 auto; padding:3px 18px; display:flex; align-items:center; }
.brand { display:inline-flex; align-items:center; gap:.65rem; color:#fff; text-decoration:none; font-weight:700; letter-spacing:.02em; }
.brand img { height:46px; width:auto; display:block; }
.main { max-width:1180px; margin:0 auto; padding:22px 18px 48px; }
.hero { text-align:center; padding:10px 0 16px; }
.escudo { display:block; margin:0 auto 8px; max-width:420px; width:min(72%,420px); height:auto; }
h1 { margin:.25rem 0 .35rem; font-size:clamp(1.65rem,4vw,2.25rem); }
.hero > p { margin:.25rem auto 1rem; color:var(--muted); }
.search-box { max-width:800px; margin:0 auto; position:relative; text-align:left; }
.search-row { display:grid; grid-template-columns:minmax(0,1fr) 46px auto; gap:8px; }
.search-row input { width:100%; min-height:50px; border:1px solid #b8c0cc; border-radius:10px; padding:0 15px; outline:none; background:#fff; }
.search-row input:focus { border-color:var(--focus); box-shadow:0 0 0 3px rgba(23,92,211,.12); }
.primary,.secondary,.icon-btn { border-radius:10px; border:1px solid var(--brand); font-weight:700; }
.primary { padding:0 22px; color:#fff; background:var(--brand); }
.primary:hover { background:var(--brand-dark); }
.icon-btn { background:#fff; color:var(--brand); font-size:1.3rem; }
.secondary { background:#fff; color:var(--brand); padding:8px 12px; }
.secondary:hover,.icon-btn:hover { background:var(--soft); }
.hint { margin:8px 4px 0; color:var(--muted); font-size:.9rem; }
.suggestions { position:absolute; left:0; right:54px; top:58px; z-index:30; max-height:360px; overflow:auto; background:#fff; border:1px solid #d0d5dd; border-radius:10px; box-shadow:0 12px 28px rgba(16,24,40,.14); }
.suggestion { width:100%; display:flex; justify-content:space-between; gap:12px; text-align:left; border:0; border-bottom:1px solid #f0f1f3; background:#fff; padding:11px 13px; color:var(--ink); }
.suggestion:last-child { border-bottom:0; }
.suggestion:hover,.suggestion.active { background:var(--soft); }
.suggestion small { color:var(--muted); white-space:nowrap; }
.browse { margin-top:20px; border-top:1px solid var(--line); padding-top:18px; }
.section-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.section-head h2 { margin:0; font-size:1.1rem; }
.letras { display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }
.letras button { min-width:36px; padding:7px 9px; border:1px solid var(--brand); background:#fff; color:var(--brand); border-radius:8px; font-weight:700; }
.letras button:hover,.letras button.active { background:var(--brand); color:#fff; }
.letras button:disabled { opacity:.35; cursor:not-allowed; }
.status { margin:22px 0 10px; min-height:24px; color:var(--muted); }
.status strong { color:var(--ink); }
.table-wrap { overflow:auto; border:1px solid var(--line); border-radius:12px; }
.table { width:100%; border-collapse:collapse; min-width:720px; }
.table th,.table td { padding:11px 12px; border-bottom:1px solid var(--line); text-align:left; vertical-align:middle; }
.table th { position:sticky; top:54px; background:#f8f9fb; color:#344054; font-size:.88rem; z-index:5; }
.table tbody tr { cursor:pointer; }
.table tbody tr:hover { background:#fafbfc; }
.table tbody tr:focus { outline:2px solid var(--focus); outline-offset:-2px; }
.table tbody tr:last-child td { border-bottom:0; }
.street-name { font-weight:700; color:#1849a9; }
.plan-link { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; text-decoration:none; color:#1849a9; font-weight:650; }
.plan-link:hover { text-decoration:underline; }
.badge { display:inline-block; padding:2px 7px; border-radius:999px; background:#eef2f6; font-size:.78rem; color:#475467; }
.empty { padding:26px; text-align:center; border:1px dashed #cfd4dc; border-radius:12px; background:#fafbfc; }
.empty strong { display:block; margin-bottom:5px; }
.footer { border-top:1px solid var(--line); color:var(--muted); text-align:center; padding:18px; font-size:.88rem; }
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
@media (max-width:680px) {
  .main { padding-left:12px; padding-right:12px; }
  .search-row { grid-template-columns:minmax(0,1fr) 44px; }
  .primary { grid-column:1 / -1; min-height:44px; }
  .suggestions { right:0; top:58px; }
  .escudo { width:90%; }
  .brand span { font-size:.9rem; }
}

/* V2 - visor cartografico */
.map-panel { margin-top:34px; padding-top:22px; border-top:1px solid var(--line); scroll-margin-top:70px; }
.map-head { margin-bottom:10px; }
.map-head h2 { font-size:1.25rem; }
.map-subtitle { margin:.25rem 0 0; color:var(--muted); font-size:.92rem; }
.map-toolbar { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }
.map-toolbar button,.map-link { border:1px solid var(--brand); background:#fff; color:var(--brand); border-radius:8px; padding:8px 11px; font-weight:700; }
.map-toolbar button:hover,.map-toolbar button.active,.map-link:hover { background:var(--brand); color:#fff; }
.map-wrap { position:relative; border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#eef1f5; }
#mapa { height:min(64vh,620px); min-height:420px; width:100%; }
#mapa.crosshair { cursor:crosshair; }
.coordinates { position:absolute; right:10px; bottom:10px; z-index:500; background:rgba(255,255,255,.92); border:1px solid rgba(0,0,0,.15); box-shadow:0 2px 8px rgba(0,0,0,.12); border-radius:7px; padding:6px 9px; font:12px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace; pointer-events:none; }
.map-status { margin:9px 0 0; font-weight:650; color:#344054; }
.map-note { margin:5px 0 0; color:var(--muted); font-size:.86rem; }
.map-error { display:flex; align-items:center; justify-content:center; min-height:420px; padding:30px; text-align:center; color:#475467; }
.actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.map-link { padding:5px 8px; font-size:.84rem; }
.leaflet-control-layers label { font-size:13px; }
@media (max-width:680px) {
  #mapa { min-height:360px; height:56vh; }
  .coordinates { font-size:10px; right:6px; bottom:6px; }
  .map-toolbar button { flex:1 1 140px; }
}

/* V3: portales y acciones GIS */
.map-actions-secondary{display:flex;gap:.55rem;flex-wrap:wrap;margin-top:.7rem}
.map-actions-secondary button{border:1px solid #c7d0da;background:#fff;border-radius:8px;padding:.55rem .75rem;cursor:pointer;font-weight:600}
.map-actions-secondary button:hover{background:#f4f7fa}
.portal-number{background:#fff;border:2px solid #34495e;border-radius:999px;min-width:26px;height:26px;line-height:22px;text-align:center;padding:0 4px;font-size:11px;font-weight:800;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.portal-number.local{transform:scale(.82)}
.portal-summary{display:flex;gap:.7rem;align-items:center;flex-wrap:wrap;margin-top:.35rem;font-size:.92rem}
.source-pill{display:inline-flex;align-items:center;border-radius:999px;background:#eef3f7;padding:.25rem .55rem;font-size:.78rem;font-weight:700}
.map-note strong{font-weight:700}
@media (max-width:720px){.map-actions-secondary button{flex:1 1 45%}}

/* V7 - buscador inteligente y puntos de interes */
.smart-chips{display:flex;flex-wrap:wrap;gap:7px;margin:12px 2px 0}
.smart-chips button{border:1px solid #cbd2dc;background:#fff;color:#344054;border-radius:999px;padding:6px 10px;font-size:.84rem;font-weight:650}
.smart-chips button:hover{border-color:var(--brand);background:var(--soft)}
.result-title{margin:22px 0 10px;font-size:1.05rem}
.poi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.poi-card{display:flex;gap:12px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.poi-icon{flex:0 0 38px;height:38px;border-radius:10px;background:#f2f4f7;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.05rem}
.poi-body{min-width:0;flex:1}.poi-body h3{font-size:1rem;margin:2px 0 4px}.poi-body p{margin:0;color:var(--muted);font-size:.88rem}
.poi-type{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#667085;font-weight:750}
.poi-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}.poi-actions .map-link{padding:5px 8px}
.address-results{display:flex;flex-wrap:wrap;gap:10px}.address-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid #b8c0cc;background:#fff;border-radius:10px;padding:10px 12px;color:var(--ink)}.address-card:hover{border-color:var(--brand);background:var(--soft)}.address-card span{font-size:.8rem;color:var(--muted)}
.poi-map-icon{background:#fff;border:2px solid #3e445e;border-radius:12px;min-width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-weight:800;box-shadow:0 2px 7px rgba(0,0,0,.25)}
@media(max-width:680px){.smart-chips{justify-content:center}.poi-grid{grid-template-columns:1fr}}

/* V7.1 - ficha, favoritos y compartir */
.selection-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;margin:10px 0 12px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 1px 3px rgba(16,24,40,.06)}
.selection-card-main{min-width:0}.selection-kicker{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.selection-card h3{margin:3px 0 4px;font-size:1.08rem}.selection-card p{margin:2px 0;color:var(--muted);font-size:.88rem}.selection-coords{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.selection-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.selection-actions button{border:1px solid #b8c0cc;background:#fff;color:#344054;border-radius:8px;padding:7px 9px;font-weight:700;font-size:.84rem}.selection-actions button:hover{border-color:var(--brand);background:var(--soft)}.selection-actions button.is-favorite{background:#fff7d6;border-color:#d6aa00;color:#7a5900}
.favorites-panel{margin:0 0 12px;border:1px solid var(--line);border-radius:10px;background:#fafbfc}.favorites-panel summary{cursor:pointer;padding:9px 12px;font-weight:700;color:#344054}.favorites-panel summary span{display:inline-flex;min-width:22px;justify-content:center;margin-left:5px;border-radius:999px;background:#e7eaf0;padding:1px 6px;font-size:.78rem}.favorites-list{display:flex;flex-wrap:wrap;gap:8px;padding:0 12px 12px}.favorite-item{display:flex;align-items:center;gap:4px;border:1px solid #d0d5dd;border-radius:9px;background:#fff;padding:3px}.favorite-item button{border:0;background:transparent;padding:6px 7px;border-radius:6px}.favorite-item .favorite-open{font-weight:700;color:#1849a9}.favorite-item .favorite-remove{color:#667085;font-size:.9rem}.share-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:2000;background:#172033;color:#fff;padding:9px 13px;border-radius:9px;box-shadow:0 6px 18px rgba(0,0,0,.2);font-size:.88rem}
@media(max-width:760px){.selection-card{grid-template-columns:1fr}.selection-actions{justify-content:flex-start}.selection-actions button{flex:1 1 120px}}


/* V7.2 - impresion/PDF y exportacion de ficha */
@media print{
  @page{size:A4 landscape;margin:10mm}
  body{background:#fff!important;color:#111!important}
  .header,.hero,.browse,#estado,#resultado,.map-toolbar,.favorites-panel,.footer,.map-note,.map-status,.portal-summary,.coordinates,.leaflet-control-container{display:none!important}
  .main{max-width:none!important;margin:0!important;padding:0!important}
  .map-panel{margin:0!important;padding:0!important;border:0!important}
  .map-head{display:block!important;margin:0 0 6mm!important}
  .map-head h2{font-size:18pt!important;margin:0!important}
  .map-subtitle{font-size:10pt!important}
  .selection-card{display:grid!important;grid-template-columns:1fr!important;border:1px solid #999!important;box-shadow:none!important;margin:0 0 5mm!important;padding:4mm!important;break-inside:avoid}
  .selection-actions{display:none!important}
  .selection-kicker{font-size:9pt!important}.selection-card h3{font-size:16pt!important}.selection-card p{font-size:10pt!important;color:#333!important}
  .map-wrap{border:1px solid #777!important;border-radius:0!important;overflow:hidden!important;break-inside:avoid}
  #mapa{height:125mm!important;min-height:125mm!important}
  .leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-overlay-pane svg{print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
  body.printing-selection .map-panel::after{content:"Callejero de Avilés · Impreso " attr(data-print-date);display:block;margin-top:3mm;text-align:right;font-size:8pt;color:#555}
}

/* V8.0 - capas tematicas, ficha GIS avanzada y coordenadas */
.advanced-tools{display:grid;grid-template-columns:1.35fr 1fr;gap:12px;margin:10px 0 12px}
.layer-panel,.coordinate-panel{border:1px solid var(--line);border-radius:11px;background:#fafbfc;overflow:hidden}
.layer-panel summary,.coordinate-panel summary{cursor:pointer;padding:10px 12px;font-weight:800;color:#344054;background:#f8f9fb}
.layer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;padding:11px 12px 8px}
.layer-grid label{display:flex;gap:7px;align-items:center;font-size:.88rem;color:#344054}
.layer-grid input{accent-color:var(--brand)}
.dynamic-legend{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 11px}
.legend-item{display:inline-flex;align-items:center;gap:6px;border:1px solid #d7dce3;background:#fff;border-radius:999px;padding:4px 8px;font-size:.78rem;color:#475467}
.legend-dot{width:10px;height:10px;border-radius:999px;display:inline-block;background:#5c657f}
.coordinate-form{display:grid;grid-template-columns:1.25fr 1fr 1fr auto;gap:7px;padding:11px 12px 2px}
.coordinate-form select,.coordinate-form input{min-width:0;border:1px solid #b8c0cc;border-radius:8px;background:#fff;padding:8px 9px}
.coordinate-form button{border:1px solid var(--brand);background:var(--brand);color:#fff;border-radius:8px;padding:8px 12px;font-weight:750}
.coordinate-panel .hint{padding:0 12px 10px}
.selection-extra{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:7px;margin-top:10px}
.selection-stat{border:1px solid #e2e6ec;border-radius:9px;background:#fafbfc;padding:7px 9px;min-width:0}
.selection-stat span{display:block;color:#667085;font-size:.72rem;text-transform:uppercase;letter-spacing:.035em;font-weight:750}
.selection-stat strong{display:block;margin-top:2px;color:#273044;font-size:.86rem;overflow-wrap:anywhere}
.advanced-layer-marker{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 5px rgba(0,0,0,.35);background:#4d5875;color:#fff;font-size:11px;font-weight:800}
@media(max-width:820px){.advanced-tools{grid-template-columns:1fr}.selection-extra{grid-template-columns:repeat(2,minmax(0,1fr))}.coordinate-form{grid-template-columns:1fr 1fr}.coordinate-form select{grid-column:1/-1}.coordinate-form button{grid-column:1/-1}}
@media(max-width:520px){.layer-grid{grid-template-columns:1fr}.selection-extra{grid-template-columns:1fr}}
@media print{.advanced-tools{display:none!important}.selection-extra{grid-template-columns:repeat(4,1fr)!important}.selection-stat{background:#fff!important;border-color:#bbb!important}}
