.hidden{display:none}
body{background:#000;color:#fff;font-family:sans-serif}

/* Bloquea click derecho visual y drag en imágenes y video */
img, video{
 -webkit-user-drag:none;
 user-drag:none;
 -webkit-user-select:none;
 user-select:none;
}

/* Solo las imágenes dentro de galerías pierden pointer-events (el ::after las cubre) */
.gallery-wrap img, .gallery-wrap video{
 pointer-events:none;
}

/* Capa invisible encima de cada galería para bloquear click derecho en la imagen */
.gallery-wrap::after{
 content:'';
 position:absolute;
 inset:0;
 z-index:10;
 pointer-events:auto;
}
.active-color{
background:linear-gradient(90deg,hsla(215,99%,42%,0.34),hsla(275,90%,36%,0.34))!important;
color:#fff!important;
border-color:rgba(255,255,255,.18)!important;
-webkit-backdrop-filter:blur(12px);
backdrop-filter:blur(12px)
}
.gallery-arrow{
position:absolute;
top:50%;
transform:translateY(-50%);
font-size:34px;
font-weight:200;
color:rgba(255,255,255,.58);
pointer-events:none;
text-shadow:0 0 18px rgba(255,255,255,.18);
animation:floatArrow 2.8s ease-in-out infinite;
-webkit-backdrop-filter:blur(6px);
backdrop-filter:blur(6px)
}

@keyframes floatArrow{
0%,100%{transform:translateY(-50%) translateX(0)}
50%{transform:translateY(-50%) translateX(4px)}
}



#transitionOverlay{
position:fixed;
inset:0;
pointer-events:none;
opacity:0;
z-index:999;
overflow:hidden;
transition:opacity .35s ease;
}

#transitionOverlay::before{
content:'';
position:absolute;
inset:-20%;
background:
linear-gradient(135deg,
transparent 0%,
transparent 32%,
rgba(59,130,246,.12) 42%,
rgba(147,51,234,.22) 50%,
rgba(59,130,246,.12) 58%,
transparent 68%,
transparent 100%),
radial-gradient(circle at center,
rgba(147,51,234,.10),
transparent 60%);
transform:translateX(-120%) skewX(-18deg) scale(1.1);
filter:blur(18px);
}

#transitionOverlay.active{
opacity:1;
}

#transitionOverlay.active::before{
animation:cinematicSwipe .65s cubic-bezier(.22,.61,.36,1) forwards;
}

@keyframes cinematicSwipe{
0%{
transform:translateX(-120%) skewX(-18deg) scale(1.08);
opacity:0;
}
15%{
opacity:.9;
}
45%{
opacity:1;
}
100%{
transform:translateX(120%) skewX(-18deg) scale(1);
opacity:0;
}
}

.gallery-arrow.left{left:22px}
.gallery-arrow.right{right:22px}

/* ========================================= */
/* GALLERY CROSSFADE — dos capas apiladas    */
/* ========================================= */

.gallery-wrap{
position:relative;
width:100%;
height:100%;
background:#111;
}

.gallery-layer{
position:absolute;
inset:0;
width:100%;
height:100%;
transition:opacity .55s cubic-bezier(.4,0,.2,1);
will-change:opacity;
backface-visibility:hidden;
transform:translateZ(0);
}

.gallery-layer img{
width:100%;
height:100%;
object-fit:cover;
display:block;
transform:translateZ(0);
backface-visibility:hidden;
}

/* Dots siempre visibles sobre las imágenes */
#rigDots, #productDots, #tp1RigDots, #tp1ProductDots{
padding:5px 10px;
border-radius:20px;
background:rgba(0,0,0,0.4);
-webkit-backdrop-filter:blur(6px);
backdrop-filter:blur(6px);
pointer-events:none;
}

#homePage,
#catalogPage,
#productPage,
#tp1Page,
#gabo3dprintPage{
transition:opacity .32s ease, transform .45s cubic-bezier(.22,.61,.36,1);
will-change:opacity,transform;
}

.page-hidden{
opacity:0;
transform:translateY(10px) scale(.992);
pointer-events:none;
}

.page-visible{
opacity:1;
transform:translateY(0) scale(1);
pointer-events:auto;
}
/* ========================================= */
/* MINIMAL SCROLLBAR */
/* ========================================= */

::-webkit-scrollbar{
width:10px;
}

::-webkit-scrollbar-track{
background:transparent;
border-radius:999px;
}

::-webkit-scrollbar-thumb{
background:linear-gradient(
180deg,
rgba(255,255,255,0.14),
rgba(255,255,255,0.06)
);
border:1px solid rgba(255,255,255,0.08);
border-radius:999px;
-webkit-backdrop-filter:blur(10px);
backdrop-filter:blur(10px);
}

::-webkit-scrollbar-thumb:hover{
background:linear-gradient(
180deg,
rgba(120,170,255,0.22),
rgba(255,255,255,0.10)
);
}

html{
scrollbar-color:rgba(255,255,255,0.18) transparent;
scrollbar-width:thin;
}

/* Animación de revelado con desfase elegante para tarjetas */
.reveal-card {
  opacity: 0;
  transform: translateY(40px) scale(0.97);
  transition: opacity 0.95s cubic-bezier(0.16, 1, 0.3, 1), 
              transform 0.95s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-card.revealed {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* Transición suave para el cambio de altura dinámica en el modal */
#gabo3dPopupSlider {
  transition: height 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

/* iOS scroll lock: fija el body cuando un modal está abierto */
body.ios-scroll-lock {
  position: fixed;
  width: 100%;
  overflow: hidden;
}
