.pagehead{background:var(--surface);border-bottom:1px solid var(--line);padding:28px 0 20px}
.pagehead h1{color:var(--brand);font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800}.pagehead p{color:var(--muted);margin:6px 0 0}
.visor{display:grid;grid-template-columns:260px 1fr 320px;grid-template-rows:minmax(0,1fr) auto;height:var(--alto,calc(100vh - 150px));min-height:520px;border-block:1px solid var(--line);background:var(--surface)}
.v-list,.v-info{padding:16px;overflow:auto}.v-list{border-right:1px solid var(--line)}.v-info{border-left:1px solid var(--line)}
.v-info h2{color:var(--brand);font-size:1.2rem;margin:0 0 6px}.v-info .t{color:var(--muted);font-size:.88rem}
.search span{display:block;font-size:.8rem;color:var(--muted);margin-bottom:4px;font-weight:600}
.search input{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:4px;font:inherit}
#v-items{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:6px}
#v-items button{width:100%;text-align:left;padding:10px 12px;border:2px solid var(--line);border-radius:4px;background:#fff;color:var(--brand);cursor:pointer;font:inherit;font-weight:600}
#v-items button[aria-pressed=true]{border-color:var(--brand);background:var(--soft)}
#v-items small{display:block;color:var(--muted);font-weight:500}
.v-stage{position:relative;background:#fff;overflow:hidden;touch-action:none}
#v-svg{width:100%;height:100%;display:block;cursor:grab}
.v-tools{position:absolute;top:10px;right:10px;display:flex;gap:6px;z-index:2}
.v-tools button{background:#fff;border:2px solid var(--brand);color:var(--brand);border-radius:4px;padding:5px 12px;cursor:pointer;font:inherit;font-weight:600}
.legend{position:absolute;left:10px;bottom:10px;display:flex;gap:14px;list-style:none;margin:0;padding:6px 14px;background:#fff;border:1px solid var(--line);border-radius:99px;font-size:.82rem}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.l-existente{background:#104f8a}.l-enObra{background:#e0793a}.l-proyectado{background:#7cb8ff}
.tip{position:absolute;line-height:1.45;white-space:nowrap;pointer-events:none;background:#0d3b66;color:#fff;padding:6px 10px;border-radius:6px;font-size:.82rem;z-index:3}
.edif{stroke-width:3;cursor:pointer;fill-opacity:.38}
.edif.existente{fill:#104f8a;stroke:#0d3b66}.edif.enObra{fill:#e0793a;stroke:#b26a00}
.edif.proyectado{fill:#7cb8ff;stroke:#2a6fc0;stroke-dasharray:14 8;fill-opacity:.25}
.edif.uaog{fill:var(--uaog);stroke:var(--uaog-borde);fill-opacity:.8}
.edif.uaog.proyectado{fill-opacity:.4}
.edif.uaog:hover{fill-opacity:1}
.edif.uaog.sel{fill:#e0793a;stroke:#e0793a;fill-opacity:.7}
.edif:hover,.edif.sel{fill-opacity:.7;stroke-width:6}.edif.sel{stroke:#e0793a;fill:#e0793a}
#v-root text{fill:#fff;paint-order:stroke;stroke:#0d3b66;stroke-width:5px;font-weight:700}
dl.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:.92rem}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0;font-weight:600}
.btn-sm{padding:6px 14px;font-size:.85rem}
.note{color:var(--muted);font-size:.85rem;padding-top:14px;padding-bottom:28px}
@media(max-width:900px){.visor{grid-template-columns:1fr;height:auto}.v-stage{height:62vh}.v-list{border-right:0;border-bottom:1px solid var(--line);max-height:220px}.v-info{border-left:0;border-top:1px solid var(--line)}}
.pagehead{padding:48px 0 36px}
.refs-t{font-size:.9rem;color:var(--brand);margin:18px 0 8px}
.refs{list-style:none;margin:0 0 14px;padding:0 6px 0 0;display:grid;gap:6px;font-size:.84rem;max-height:min(46vh,360px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.refs li{display:flex;align-items:center;gap:8px}
.refs i{flex:none;width:14px;height:14px;border-radius:3px;border:1px solid rgba(0,0,0,.25)}
.refs span{flex:1}.refs em{font-style:normal;color:var(--muted)}
.v-ciudades{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0}
.v-ciudades button{padding:5px 12px;border:2px solid var(--line);border-radius:99px;background:#fff;color:var(--brand);font:inherit;font-size:.84rem;font-weight:600;cursor:pointer}
.v-ciudades button small{color:var(--muted);font-weight:500;margin-left:2px}
.v-ciudades button[aria-pressed=true]{border-color:var(--brand);background:var(--brand);color:#fff}
.v-ciudades button[aria-pressed=true] small{color:#d4e2f4}
.v-carga{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:rgba(255,255,255,.82);text-align:center;color:var(--brand)}
.v-carga[hidden]{display:none}
.v-carga p{margin:12px 0 2px;font-weight:700}.v-carga small{color:var(--muted)}
.v-spin{display:inline-block;width:42px;height:42px;border:4px solid var(--line);border-top-color:var(--brand-2);border-radius:50%;animation:v-giro .9s linear infinite}
@keyframes v-giro{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.v-spin{animation-duration:2.5s}}
.v-prov{font-style:italic;margin:0 0 10px}
.v-stage::after{content:"Actualizando vista…";position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:4;padding:6px 14px 6px 36px;border-radius:99px;background:#fff;border:1px solid var(--line);color:var(--brand);font-size:.82rem;font-weight:600;pointer-events:none;opacity:0;transition:opacity .12s;background-image:radial-gradient(circle,transparent 55%,var(--brand-2) 58%);background-repeat:no-repeat;background-size:16px 16px;background-position:12px center}
.v-stage.redibujando::after{opacity:1}
.v-pie{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;padding:8px 16px;border-top:1px solid var(--line);background:var(--soft);font-size:.8rem;color:var(--muted)}
.v-pie p{margin:0}.v-aviso{flex:1 1 420px;padding-left:10px;border-left:4px solid var(--accent);color:var(--ink,#181919)}

.pagehead.pagehead-compacto{padding:14px 0 12px}.pagehead-compacto h1{font-size:clamp(1.4rem,2.4vw,1.8rem)}.pagehead-compacto p{margin-top:2px;font-size:.92rem}
.pagehead-compacto .v-ciudades{margin-top:10px}

/* Responsive del visor */
@media(min-width:901px) and (max-width:1200px){.visor{grid-template-columns:220px 1fr 270px}.v-list,.v-info{padding:12px}}
@media(max-width:900px){
  .visor{height:auto!important;min-height:0}
  .v-stage{height:min(62vh,520px);min-height:340px}
  .v-list{max-height:none;overflow:visible}
  #v-items{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
  .v-info{padding:16px}
  .refs{max-height:none}
  .v-pie{position:static}
  .v-tools button{min-width:44px;min-height:44px}
}
@media(max-width:560px){
  .v-ciudades{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding:2px 16px 6px;scrollbar-width:thin}
  .v-ciudades button{flex:none;min-height:40px}
  .v-stage::after{max-width:80%}
  .tip{white-space:normal;max-width:70vw}
  .v-aviso{flex-basis:100%}
}

.v-info dl.kv-sede{gap:2px 12px;font-size:.84rem;line-height:1.35;margin:6px 0 10px}.v-info dl.kv-sede dt{white-space:nowrap}.v-info dl.kv-sede dd{text-align:right}
.v-info h2{margin-bottom:2px}
