/* animations.css - transition styles and reveal animations */
.fade-in { opacity:0; transform:translateY(10px); transition:opacity 600ms ease, transform 600ms ease; }
.fade-in.is-visible { opacity:1; transform:none; }
.slide-left { transform:translateX(-12px); opacity:0; transition:all 640ms cubic-bezier(.2,.9,.2,1); }
.slide-left.is-visible { transform:none; opacity:1; }
.scale-up { transform:scale(.98); opacity:0; transition:all 520ms ease; }
.scale-up.is-visible { transform:none; opacity:1; }

/* Page transition variants */
/* overlay base */
.transition-overlay { position:fixed; inset:0; z-index:99998; pointer-events:none; opacity:0; transition:opacity 360ms ease; }
.transition-overlay.active { opacity:1; pointer-events:auto; }

/* fade */
.transition-fade { background: rgba(0,0,0,0.85); }

/* slide-left: we animate transform of inner overlay to reveal */
.transition-slide-left { background:linear-gradient(90deg,var(--accent),var(--accent-2)); transform: translateX(-100%); transition: transform 420ms ease; }
.transition-slide-left.active { transform: translateX(0%); }

/* slide-right */
.transition-slide-right { background:linear-gradient(90deg,var(--accent),var(--accent-2)); transform: translateX(100%); transition: transform 420ms ease; }
.transition-slide-right.active { transform: translateX(0%); }

/* slide-up */
.transition-slide-up { background:linear-gradient(180deg,var(--accent),var(--accent-2)); transform: translateY(100%); transition: transform 420ms ease; }
.transition-slide-up.active { transform: translateY(0%); }

/* scale out/in */
.transition-scale-out { background: var(--accent); transform:scale(1); transition: transform 420ms ease, opacity 420ms; }
.transition-scale-out.active { transform:scale(0.96); opacity:0.95; }

/* scale in */
.transition-scale-in { background: var(--accent); transform:scale(0.98); transition: transform 420ms ease; }
.transition-scale-in.active { transform:scale(1.02); opacity:0.98; }

/* wipe left->right (curtain) */
.transition-wipe-lr { background:linear-gradient(90deg,var(--accent),var(--accent-2)); transform: translateX(-100%); transition: transform 420ms ease; }
.transition-wipe-lr.active { transform: translateX(0%); }

/* wipe top->bottom */
.transition-wipe-tb { background:linear-gradient(180deg,var(--accent),var(--accent-2)); transform: translateY(-100%); transition: transform 420ms ease; }
.transition-wipe-tb.active { transform: translateY(0%); }

/* blur */
.transition-blur-fade { backdrop-filter: blur(6px); background: rgba(0,0,0,0.45); }

/* pixel (using CSS filter scale + pixelate simulation) */
.transition-pixel-fade { background: var(--accent); filter: contrast(1.2) saturate(1.2); opacity:0.98; transition:opacity 420ms ease, filter 420ms ease; }
.transition-pixel-fade.active { filter: blur(0px) saturate(1); opacity:1; }

/* helper when hiding overlay after navigation */
.transition-overlay.hidden { display:none; }
