/* Barani Enterprises - motion layer
   Tasteful, performant animations: scroll reveals, hover lifts, subtle shine.
   Everything degrades gracefully and respects prefers-reduced-motion. */

/* ---------- Scroll reveal ---------- */
[data-reveal] {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1);
    will-change: opacity, transform;
}
[data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal="left"]  { transform: translateX(-26px); }
[data-reveal="right"] { transform: translateX(26px); }
[data-reveal="zoom"]  { transform: scale(.94); }

/* stagger inside grids */
[data-reveal].d1 { transition-delay: .06s; }
[data-reveal].d2 { transition-delay: .12s; }
[data-reveal].d3 { transition-delay: .18s; }
[data-reveal].d4 { transition-delay: .24s; }
[data-reveal].d5 { transition-delay: .30s; }
[data-reveal].d6 { transition-delay: .36s; }

/* ---------- Hero entrance ---------- */
@keyframes ba-rise { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
.hero h1, .phero h1, .hero-service h1 { animation: ba-rise .8s cubic-bezier(.22,.61,.36,1) both; }
.hero h1 + p, .phero h1 + p, .hero-service h1 + p { animation: ba-rise .8s .12s cubic-bezier(.22,.61,.36,1) both; }
.hero-buttons, .btn-group, .hero-stats { animation: ba-rise .8s .24s cubic-bezier(.22,.61,.36,1) both; }

/* ---------- Cards ---------- */
.card-grid > *, .service-grid > *, .why-grid > *, .cat-grid > *,
.services-grid > *, .locations-grid > *, .features-grid > *,
.branch-grid > *, .tgrid > *, .flex-grid > *, .steps > * {
    transition: transform .35s cubic-bezier(.22,.61,.36,1), box-shadow .35s ease, border-color .35s ease;
}
.card-grid > *:hover, .service-grid > *:hover, .why-grid > *:hover, .cat-grid > *:hover,
.services-grid > *:hover, .locations-grid > *:hover, .features-grid > *:hover,
.branch-grid > *:hover, .tgrid > *:hover, .flex-grid > *:hover {
    transform: translateY(-6px);
    box-shadow: 0 18px 38px -18px rgba(15, 23, 42, .35);
}

/* image zoom inside cards / gallery */
.card-grid img, .service-grid img, .tgrid img, .gallery-grid img, .cat-grid img, .flex-grid img {
    transition: transform .6s cubic-bezier(.22,.61,.36,1);
}
.card-grid > *:hover img, .service-grid > *:hover img, .tgrid > *:hover img,
.gallery-grid > *:hover img, .cat-grid > *:hover img, .flex-grid > *:hover img { transform: scale(1.05); }
.gallery-grid > *, .card-grid > *, .tgrid > * { overflow: hidden; }

/* ---------- Buttons: lift + shine sweep ---------- */
a[class*="btn"], button[class*="btn"], .btn, .cta, .cta-btn {
    position: relative;
    overflow: hidden;
    transition: transform .25s cubic-bezier(.22,.61,.36,1), box-shadow .25s ease, filter .25s ease;
}
a[class*="btn"]:hover, button[class*="btn"]:hover, .btn:hover, .cta:hover, .cta-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 26px -12px rgba(15, 23, 42, .45);
}
a[class*="btn"]:active, button[class*="btn"]:active, .btn:active { transform: translateY(0) scale(.98); }
a[class*="btn"]::after, .btn::after, .cta::after {
    content: "";
    position: absolute;
    top: 0; left: -60%;
    width: 45%; height: 100%;
    background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
    transform: skewX(-18deg);
    opacity: 0;
    pointer-events: none;
}
a[class*="btn"]:hover::after, .btn:hover::after, .cta:hover::after {
    animation: ba-shine .8s ease forwards;
}
@keyframes ba-shine { from { left: -60%; opacity: 1; } to { left: 120%; opacity: 0; } }

/* ---------- Nav links: animated underline ---------- */
.nav-links a { position: relative; transition: color .25s ease; }
.nav-links a::after {
    content: "";
    position: absolute;
    left: 0; bottom: -4px;
    width: 100%; height: 2px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: right;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.nav-links a:hover::after { transform: scaleX(1); transform-origin: left; }

/* header shadow once scrolled */
header, nav { transition: box-shadow .3s ease, background-color .3s ease; }
body.ba-scrolled header, body.ba-scrolled nav.fixed, body.ba-scrolled .navbar {
    box-shadow: 0 8px 24px -14px rgba(15, 23, 42, .45);
}

/* ---------- Floating buttons ---------- */
.float-btn { transition: transform .3s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease; }
.float-btn:hover { transform: scale(1.1) rotate(-4deg); box-shadow: 0 14px 30px -12px rgba(15,23,42,.5); }
.float-wa { position: relative; }
.float-wa::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    border: 2px solid currentColor;
    opacity: .6;
    animation: ba-ping 2.4s cubic-bezier(0,0,.2,1) infinite;
    pointer-events: none;
}
@keyframes ba-ping { 0% { transform: scale(1); opacity: .5; } 70%, 100% { transform: scale(1.5); opacity: 0; } }

/* ---------- Stats count-up shimmer ---------- */
.stat-number { transition: transform .35s ease; }
.hero-stats > *:hover .stat-number { transform: translateY(-3px) scale(1.04); }

/* ---------- FAQ / accordion smoothness ---------- */
.faq-list > * { transition: background-color .25s ease, box-shadow .25s ease, transform .25s ease; }
.faq-list > *:hover { transform: translateY(-2px); }

/* ---------- Links in content ---------- */
section p a:not([class]) { transition: color .2s ease, background-size .3s ease;
    background-image: linear-gradient(currentColor, currentColor);
    background-repeat: no-repeat;
    background-size: 0% 1px;
    background-position: 0 100%;
}
section p a:not([class]):hover { background-size: 100% 1px; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
    [data-reveal] { opacity: 1 !important; transform: none !important; }
}
