/* 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:#3d8b5f}.visor3d .v-leyenda .no{background:#b5473a}
.visor3d .v-panel{position:absolute;left:28px;bottom:28px;display:flex;gap:28px;align-items:flex-end;background:rgba(244,241,234,.9);
  padding:18px 22px;backdrop-filter:blur(8px);max-width:calc(100% - 56px);border:1px solid #ddd5c6}
.visor3d .v-panel section{display:flex;flex-direction:column;gap:10px;padding:0;border:0}
.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 .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;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-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}}
