/* Visor 3D de AP1254. Todo vive dentro de .visor3d para poder incrustarlo en la landing. */
.visor3d{--ink:#0a0a0a;--paper:#f4f1ea;--accent:#a8865a;--muted:#6f6a60;--ok:#3f5a45;--hold:#8a7a5a;--sold:#b9b3a7;
  --serif:'Cormorant Garamond',Georgia,serif;--sans:Inter,system-ui,sans-serif;
  position:relative;overflow:hidden;background:#e4e6e2;color:var(--ink);font-family:var(--sans);height:min(88vh,920px);min-height:560px}
.visor3d.pantalla{height:100vh;height:100dvh;min-height:0}
.visor3d *{box-sizing:border-box}
.visor3d .v-lienzo{position:absolute;inset:0}
.visor3d .v-lienzo canvas{display:block;touch-action:none}
.visor3d .eti{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.visor3d .v-cabeza{position:absolute;top:24px;left:28px;pointer-events:none}
.visor3d .v-cabeza h1,.visor3d .v-cabeza h2{font-family:var(--serif);font-weight:400;font-size:42px;line-height:1;margin:8px 0 0}
.visor3d .v-cabeza em{font-style:italic}
.visor3d .v-leyenda{position:absolute;top:30px;right:28px;display:flex;gap:16px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  background:rgba(244,241,234,.86);padding:10px 14px;backdrop-filter:blur(6px)}
.visor3d .v-leyenda i{display:inline-block;width:11px;height:11px;margin-right:7px;vertical-align:-1px}
.visor3d .v-leyenda .ok{background:#5e7f66}.visor3d .v-leyenda .no{background:#a3625a}
/* Panel centrado: tres bloques con la etiqueta arriba y los botones alineados en la misma línea de abajo */
.visor3d .v-panel{position:absolute;left:50%;transform:translateX(-50%);bottom:24px;display:flex;align-items:stretch;justify-content:center;
  background:rgba(244,241,234,.92);padding:16px 0;backdrop-filter:blur(8px);width:max-content;max-width:calc(100% - 48px);border:1px solid #ddd5c6}
.visor3d .v-panel section{display:flex;flex-direction:column;justify-content:space-between;gap:10px;padding:0 22px;border:0}
.visor3d .v-panel section+section{border-left:1px solid #ddd5c6}
.visor3d .v-vecinos{margin-left:10px}
.visor3d .botones{display:flex;flex-wrap:wrap;gap:4px}
.visor3d button,.visor3d .acciones a{font:500 12px/1 var(--sans);letter-spacing:.06em;color:var(--ink);background:transparent;border:1px solid #cfc6b5;
  padding:9px 12px;cursor:pointer;text-decoration:none;min-height:36px;text-transform:none}
.visor3d button:hover,.visor3d .acciones a:hover{border-color:var(--ink)}
.visor3d button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.visor3d button:focus-visible,.visor3d input:focus-visible,.visor3d a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.visor3d .v-sol{min-width:330px}
.visor3d .v-sol input[type=range]{margin:2px 0 0}
.visor3d .fila{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.visor3d .v-hora-txt{color:var(--ink);margin-left:8px;letter-spacing:.08em}
.visor3d input[type=range]{width:100%;accent-color:var(--accent);border:0;padding:0}
.visor3d input[type=date]{width:auto;font:13px var(--sans);padding:7px 8px;border:1px solid #cfc6b5;background:transparent;color:var(--ink);min-height:36px}
.visor3d .v-ficha{position:absolute;top:16px;right:16px;width:clamp(360px,42vw,660px);max-height:calc(100% - 32px);overflow:auto;background:var(--paper);
  border:1px solid #d9d2c3;padding:22px 24px;box-shadow:0 18px 40px rgba(0,0,0,.16);z-index:6}
.visor3d .v-ficha h2{font-family:var(--serif);font-style:italic;font-weight:400;font-size:42px;line-height:1;margin:6px 0 6px}
.visor3d .v-f-est{font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.visor3d .v-f-datos{display:grid;grid-template-columns:1fr auto 1fr auto;column-gap:18px;row-gap:6px;margin:14px 0;font-size:13.5px}
.visor3d .v-f-datos dt{color:var(--muted)} .visor3d .v-f-datos dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}
.visor3d .v-f-img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;border:1px solid #e3dccf;background:#f8f6f1;cursor:zoom-in}
.visor3d .acciones{display:flex;gap:6px;margin-top:14px}
.visor3d .acciones a{flex:1;text-align:center}
.visor3d .acciones a:last-child{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.visor3d .v-cerrar{position:absolute;top:10px;right:10px;border:0;font-size:22px;min-height:auto;padding:4px 10px}
.visor3d .v-carga{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--serif);font-style:italic;font-size:28px;color:var(--muted);
  background:#e9e6df;transition:opacity .6s;text-align:center;padding:24px}
.visor3d .v-carga.fuera{opacity:0;pointer-events:none}
.visor3d .v-nota{position:absolute;right:28px;bottom:10px;font-size:10px;color:var(--muted);letter-spacing:.04em;margin:0}
.visor3d.noche .v-cabeza,.visor3d.noche .v-nota{color:#e9e4da}
.visor3d.sin-webgl .v-panel,.visor3d.sin-webgl .v-leyenda{display:none}
@media (max-width:820px){
  .visor3d{height:min(92vh,820px);min-height:620px}
  .visor3d.pantalla{min-height:0}
  .visor3d .v-cabeza{top:14px;left:16px}.visor3d .v-cabeza h1,.visor3d .v-cabeza h2{font-size:28px}
  .visor3d .v-leyenda{top:74px;right:16px;gap:10px;font-size:9px;padding:6px 8px}
  .visor3d .v-panel{left:0;right:0;bottom:0;transform:none;width:auto;max-width:none;flex-direction:column;align-items:stretch;gap:12px;padding:12px 16px 16px;
    border-left:0;border-right:0;border-bottom:0}
  .visor3d .v-panel section{padding:0}.visor3d .v-panel section+section{border-left:0}
  .visor3d .v-sol{min-width:0}
  .visor3d button{padding:7px 9px;font-size:11px;min-height:32px}
  .visor3d .v-panel .eti{font-size:10px}
  .visor3d .v-panel section{gap:6px}
  .visor3d input[type=date]{min-height:32px;padding:5px 6px;font-size:12px}
  .visor3d .v-ficha{top:auto;bottom:0;right:0;left:0;width:auto;max-height:82%;z-index:6;padding:18px}
  .visor3d .v-f-datos{grid-template-columns:1fr auto}
  .visor3d .v-nota{display:none}
}
@media (prefers-reduced-motion:reduce){.visor3d .v-carga{transition:none}}
/* Etiquetas con el número de cada unidad (se colocan sobre el modelo en cada cuadro) */
.visor3d .v-etiquetas{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden}
.visor3d .v-eti{position:absolute;left:0;top:0;pointer-events:auto;display:inline-flex;align-items:center;gap:6px;min-height:0;
  padding:6px 12px 6px 10px;border:1px solid rgba(10,10,10,.12);border-radius:999px;background:rgba(244,241,234,.94);
  box-shadow:0 2px 8px rgba(0,0,0,.14);cursor:pointer;white-space:nowrap;font:500 12px/1 var(--sans);letter-spacing:.02em;color:var(--ink)}
.visor3d .v-eti b{font-family:var(--serif);font-size:18px;font-weight:500;letter-spacing:0}
.visor3d .v-eti span{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.visor3d .v-eti i{width:8px;height:8px;border-radius:50%;background:#a3625a;flex:none}
.visor3d .v-eti[data-st=ok] i{background:#5e7f66}
.visor3d .v-eti:hover,.visor3d .v-eti.activa{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.visor3d .v-eti:hover span,.visor3d .v-eti.activa span{color:#cfc9bd}
.visor3d .v-eti[hidden]{display:none}
@media (max-width:820px){.visor3d .v-eti{padding:3px 8px 3px 6px}.visor3d .v-eti b{font-size:14px}}
/* Cámara de renders y visor de renders sobre el 3D */
.visor3d .v-cam{background:var(--ink);color:var(--paper);border-color:var(--ink);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
.visor3d .v-cam span{color:var(--accent);font-size:13px}
.visor3d .v-cam:hover{background:var(--accent);border-color:var(--accent)}
.visor3d .v-foto{position:absolute;inset:0;z-index:8;background:rgba(10,10,10,.88);display:flex;align-items:center;justify-content:center}
.visor3d .v-foto[hidden]{display:none}
.visor3d .v-foto figure{margin:0;max-width:92%;max-height:88%;display:flex;flex-direction:column;align-items:center;gap:10px}
.visor3d .v-foto img{max-width:100%;max-height:calc(100% - 30px);object-fit:contain;box-shadow:0 20px 50px rgba(0,0,0,.4)}
.visor3d .v-foto figcaption{color:#e9e4da;font-size:12px;letter-spacing:.1em}
.visor3d .v-foto button{position:absolute;width:48px;height:48px;border:1px solid rgba(244,241,234,.4);background:rgba(10,10,10,.4);color:#f4f1ea;font-size:26px;padding:0;min-height:0}
.visor3d .v-foto-ant{left:14px;top:50%;transform:translateY(-50%)}.visor3d .v-foto-sig{right:14px;top:50%;transform:translateY(-50%)}.visor3d .v-foto-cerrar{right:14px;top:14px}
