/* Estilos propios (lo que no resuelve Tailwind) */
html { -webkit-tap-highlight-color: transparent; scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; }
[x-cloak], .oculto { display: none !important; }

/* Aparición suave al hacer scroll */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1); }
.reveal.visible { opacity: 1; transform: none; }

@keyframes pop { 0% { transform: scale(1); } 40% { transform: scale(1.35); } 100% { transform: scale(1); } }
.pop { animation: pop .45s ease; }

@keyframes slideUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
.slide-up { animation: slideUp .35s cubic-bezier(.2,.7,.2,1) both; }

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.fade-in { animation: fadeIn .3s ease both; }

@keyframes ring { 0%,100% { transform: rotate(0); } 15% { transform: rotate(14deg); } 30% { transform: rotate(-12deg); } 45% { transform: rotate(8deg); } 60% { transform: rotate(-6deg); } 75% { transform: rotate(3deg); } }
.ring-anim { animation: ring 1s ease; transform-origin: top center; }

@keyframes pulseDot { 0% { box-shadow: 0 0 0 0 rgb(var(--brand) / .6); } 100% { box-shadow: 0 0 0 10px rgb(var(--brand) / 0); } }
.pulse-dot { animation: pulseDot 1.6s infinite; }

/* Skeleton */
.skeleton { background: linear-gradient(90deg, #eef2f0 25%, #f6f8f7 37%, #eef2f0 63%); background-size: 400% 100%; animation: sk 1.3s ease infinite; }
@keyframes sk { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }

/* Scroll horizontal sin barra */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { scrollbar-width: none; }
.snap-x-m { scroll-snap-type: x mandatory; }
.snap-x-m > * { scroll-snap-align: start; }

/* Drawer / modal */
.drawer { transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.overlay { transition: opacity .25s ease; }

/* Fondo de la portada con grilla suave como el PDF */
.bg-grilla {
  background-image:
    radial-gradient(60% 60% at 70% 30%, rgb(var(--brand) / .28), transparent 70%),
    linear-gradient(rgb(255 255 255 / .04) 1px, transparent 1px),
    linear-gradient(90deg, rgb(255 255 255 / .04) 1px, transparent 1px);
  background-size: auto, 32px 32px, 32px 32px;
}

/* Imagen de producto sin foto */
.ph-prod { background: radial-gradient(circle at 30% 20%, rgb(var(--brand) / .14), transparent 60%), #f3f6f4; }

/* Safe area para la barra inferior en iPhone */
.pb-safe { padding-bottom: max(env(safe-area-inset-bottom), .5rem); }

/* Carrusel */
.carrusel { position: relative; overflow: hidden; }
.carrusel-track { display: flex; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.carrusel-track > * { flex: 0 0 100%; }

input[type=number]::-webkit-inner-spin-button { opacity: .4; }

@media print { .no-print { display: none !important; } }
