/* V90.43 Premium: controles integrados en las barras originales */
#hw43-controls[hidden]{display:none!important}
.hw43-rail{position:fixed!important}
#hw43-controls{display:contents}
.hw43-rail>.hw43-arrow{display:none!important}
.hw43-rail #hw43-controls .hw43-arrow{position:absolute;top:50%;transform:translateY(-50%);width:28px;height:26px;display:grid;place-items:center;padding:0;margin:0;border:1px solid #baf8937a;border-radius:6px;background:#1c4234;color:#dfffc9;box-shadow:0 0 8px #6cfa6930;font:700 19px/1 system-ui;cursor:pointer;pointer-events:auto;z-index:3}
.hw43-rail #hw43-controls .hw43-left{left:6px}
.hw43-rail #hw43-controls .hw43-right{right:6px}
.hw43-rail #hw43-controls .hw43-arrow:focus-visible{outline:2px solid white;outline-offset:2px}
.hw42-unlocked #v57-progress .v57-progress-prev,.hw42-unlocked #v57-progress .v57-progress-next,.hw42-unlocked #v9018-salon .v9020-back,.hw42-unlocked #v9018-salon .v9020-forward,.hw42-unlocked #v63-bedroom .v66-progress-prev,.hw42-unlocked #v63-bedroom .v66-progress-next,.hw42-unlocked .v73-back,.hw42-unlocked .v73-forward,.hw42-unlocked .v73-future{visibility:hidden!important;pointer-events:none!important}
.hw42-unlocked #v56-tesla .v56-tesla-back{visibility:hidden!important;pointer-events:none!important}
/* El rail del escritorio debe permanecer visible también en Tesla */
.hw42-unlocked body.v56-in-tesla #v57-progress{display:grid!important;z-index:900!important}
.hw42-unlocked #v57-progress[hidden]{display:grid!important}
.hw42-film{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;z-index:22000;overflow:hidden;pointer-events:none;background:transparent}
.hw42-film::backdrop{background:transparent}
.hw42-strip{display:flex;width:200vw;height:100dvh;will-change:transform;transform:translate3d(0,0,0);backface-visibility:hidden}
.hw42-preview{width:100vw;height:100dvh;flex:none;position:relative;overflow:hidden;display:grid;place-items:center;background-color:#10151a;background-position:center;background-size:contain;background-repeat:no-repeat;contain:paint}
.hw43-still{width:100%;height:100%;object-fit:contain;display:block;user-select:none;pointer-events:none}
@media(max-width:560px){.hw43-rail #hw43-controls .hw43-arrow{width:24px;height:23px;font-size:16px;left:auto}.hw43-rail #hw43-controls .hw43-left{left:5px}.hw43-rail #hw43-controls .hw43-right{right:5px}}
@media(prefers-reduced-motion:reduce){.hw42-strip{transition:none!important}}

/* V90.44: el fotograma debe cubrir todo el visor durante el travelling. */
.hw42-film,.hw42-strip,.hw42-preview{isolation:isolate}
.hw42-film{background:#07101a}
.hw42-preview{background-color:#07101a}

/* V90.46: Tesla usa su barra original, no la barra de escritorio. */
.hw42-unlocked body.v56-in-tesla #v57-progress,
.hw42-unlocked body.v56-in-tesla #v57-progress[hidden]{display:none!important}
.hw42-unlocked #v63-tesla-progress .v63-progress-prev,
.hw42-unlocked #v63-tesla-progress .v63-progress-next{visibility:hidden!important;pointer-events:none!important}
.hw46-tesla-preview{background:#080c12}
.hw46-tesla-still{display:block;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none;user-select:none}
/* El travelling nunca aplica escala ni perspectiva. */
.hw42-film,.hw42-strip,.hw42-preview{perspective:none!important;transform-origin:center center}

/* V90.47: igualar el encuadre de la foto del salón al de su stage real (4:3 cover). */
.hw42-preview.hw47-salon-frame .hw43-still{width:100%;height:100%;object-fit:cover;object-position:center}
@media (max-width:650px){.hw42-film,.hw42-preview,.hw42-strip{height:100dvh}}

/* V90.47 integral: capturar escena real completa (incluidas máscaras y canvas).
   Las capturas viejas y nuevas usan el mismo viewport y nunca escalan. */
@supports (view-transition-name: root){
 ::view-transition-old(root),::view-transition-new(root){
  animation-duration:1.9s;
  animation-timing-function:cubic-bezier(.42,0,.58,1);
  animation-fill-mode:both;
  mix-blend-mode:normal;
  width:100%;height:100%;
 }
 html[data-hw47-direction="forward"]::view-transition-old(root){animation-name:hw47-out-left}
 html[data-hw47-direction="forward"]::view-transition-new(root){animation-name:hw47-in-right}
 html[data-hw47-direction="backward"]::view-transition-old(root){animation-name:hw47-out-right}
 html[data-hw47-direction="backward"]::view-transition-new(root){animation-name:hw47-in-left}
 @keyframes hw47-out-left{from{transform:translateX(0)}to{transform:translateX(-100%)}}
 @keyframes hw47-in-right{from{transform:translateX(100%)}to{transform:translateX(0)}}
 @keyframes hw47-out-right{from{transform:translateX(0)}to{transform:translateX(100%)}}
 @keyframes hw47-in-left{from{transform:translateX(-100%)}to{transform:translateX(0)}}
 @media(prefers-reduced-motion:reduce){
  ::view-transition-old(root),::view-transition-new(root){animation-duration:0.01ms!important}
 }
}
/* Avoid a second scene-entry animation while the document snapshot is active. */
html.hw47-transitioning #v9018-salon{animation:none!important}
/* Swipe gesture does not suppress vertical scrolling or puzzle click targets. */
@media(pointer:coarse){html.hw42-unlocked{overscroll-behavior-x:contain}}


/* V90.50: desplazamiento interior de escenas recortadas, nunca de sus barras. */
html.hw42-unlocked.hw50-cropped #scene,
html.hw42-unlocked.hw50-cropped #v56-kitchen,
html.hw42-unlocked.hw50-cropped #v9018-salon .v9018-stage,
html.hw42-unlocked.hw50-cropped #v73-workshop .v73-viewport,
html.hw42-unlocked.hw50-cropped #v73-bath .v73-viewport,
html.hw42-unlocked.hw50-cropped #v63-bedroom .v66-stage,
html.hw42-unlocked.hw50-cropped #v56-tesla{
 touch-action:none!important;
 overscroll-behavior:contain;
}
html.hw42-unlocked #scene.v60-pan{
 transform:translate(calc(-50% + var(--v60-desk-x,0px)),calc(-50% + var(--hw50-pan-y,0px)))!important;
}
html.hw42-unlocked #v56-kitchen .v56-kitchen-photo{
 object-position:var(--v571-kitchen-x,50%) var(--hw50-kitchen-y,50%);
}
html.hw42-unlocked #v9018-salon .v9018-stage{
 transform:translate(calc(-50% + var(--hw50-salon-pan,0px)),var(--hw50-pan-y,0px));
}
html.hw42-unlocked #v73-workshop .v73-stage,
html.hw42-unlocked #v73-bath .v73-stage{
 transform:translate(calc(-50% + var(--v73-pan,0px)),calc(-50% + var(--hw50-pan-y,0px)));
}
html.hw42-unlocked #v63-bedroom.v66-bedroom .v66-stage{
 transform:translate(calc(-50% + var(--v66-pan,0px)),calc(-50% + var(--hw50-pan-y,0px)));
}
html.hw42-unlocked #v56-tesla.v62-tesla-scene .v62-stage{
 transform:translate(calc(-50% + var(--hw50-tesla-pan,0px)),calc(-50% + var(--hw50-pan-y,0px)));
}
html.hw42-unlocked.hw50-cropped #v9018-salon .v9018-stage,
html.hw42-unlocked.hw50-cropped #v73-workshop .v73-stage,
html.hw42-unlocked.hw50-cropped #v73-bath .v73-stage,
html.hw42-unlocked.hw50-cropped #v63-bedroom .v66-stage,
html.hw42-unlocked.hw50-cropped #v56-tesla{
 cursor:grab;
}
@media(prefers-reduced-motion:reduce){
 html.hw42-unlocked #v56-kitchen .v56-kitchen-photo{transition:none!important}
}


/* V90.53: Salon FULL FRAME. La escena y sus hotspots comparten el mismo
   lienzo 4:3, ampliado para cubrir TODO el viewport y anclado ARRIBA.
   El exceso inferior se recorta sin destruir la foto ni recalibrar enigmas.
   El motor V90.50 permite explorar el recorte donde resulte necesario. */
html.hw42-unlocked #v9018-salon .v9018-stage{
 position:absolute!important;
 top:0!important;
 bottom:auto!important;
 left:50%!important;
 width:max(100vw, calc(100dvh * 1.333333333))!important;
 height:auto!important;
 aspect-ratio:4 / 3!important;
 max-width:none!important;max-height:none!important;
 transform:translate(calc(-50% + var(--hw50-salon-pan,0px)), var(--hw50-pan-y,0px))!important;
 transform-origin:center top!important;
 overflow:hidden;
}
html.hw42-unlocked #v9018-salon .v9018-stage > img{
 display:block!important;
 width:100%!important;height:100%!important;object-fit:fill!important;
}
/* El viewport recorta realmente el fondo: sin bandas laterales ni inferiores. */
html.hw42-unlocked #v9018-salon{overflow:hidden!important;}
/* El visor alternativo de transiciones usa exactamente cover, centrado en X
   y arriba en Y, en lugar del contain anterior con bandas negras. */
.hw42-preview.hw47-salon-frame{background:#15100e!important;}
.hw42-preview.hw47-salon-frame .hw43-still{
 display:block!important;
 width:100%!important;height:100%!important;
 object-fit:cover!important;object-position:center top!important;
 align-self:stretch!important;justify-self:stretch!important;
}
