/* =====================================================================
   Aradhya Pavan — Motion layer (Wave 1)
   Lenis + GSAP + Custom Cursor + Magnetic + Loader + View Transitions
   ===================================================================== */

/* ---------- Lenis required styles ---------- */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
.lenis.lenis-smooth iframe{pointer-events:none}

/* ---------- View Transitions: theme wipe ---------- */
@supports (view-transition-name:none){
    ::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
    ::view-transition-old(root){z-index:1}
    ::view-transition-new(root){z-index:2}
    html.theme-wipe-active::view-transition-new(root){animation:themeWipeIn .6s cubic-bezier(.65,.05,.36,1) both}
    @keyframes themeWipeIn{from{clip-path:circle(0% at var(--wipe-x,90%) var(--wipe-y,5%))}to{clip-path:circle(160% at var(--wipe-x,90%) var(--wipe-y,5%))}}
}

/* ---------- Cross-document View Transitions for detail-page nav ---------- */
@view-transition{navigation:auto}
@supports (view-transition-name:none){
    ::view-transition-group(root){animation-duration:.55s}
    ::view-transition-old(root){animation:vt-out .35s cubic-bezier(.4,0,1,1) both}
    ::view-transition-new(root){animation:vt-in .55s cubic-bezier(.22,1,.36,1) both}
    @keyframes vt-out{to{opacity:0;transform:translateY(-12px)}}
    @keyframes vt-in{from{opacity:0;transform:translateY(18px)}}
    /* Keep the nav stable across pages — same identity */
    .nav-shell{view-transition-name:nav-shell}
    .footer{view-transition-name:footer}
}

/* ---------- Smooth scroll polish — disable when Lenis active ---------- */
html.lenis{scroll-behavior:auto}

/* ---------- Distinctive button + link hover states ---------- */
.btn{position:relative;overflow:hidden;isolation:isolate}
/* light sweep */
.btn::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);transition:transform .65s cubic-bezier(.22,1,.36,1);pointer-events:none}
.btn:hover::after{transform:translateX(120%)}
.btn-primary:hover{transform:translateY(-3px) scale(1.015);box-shadow:0 22px 44px -12px var(--accent-glow),0 0 0 1px var(--accent-line)}
.btn-ghost:hover{transform:translateY(-3px);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 16px 34px -16px var(--accent-glow),inset 0 0 0 1px var(--accent-line)}
.btn:active{transform:translateY(-1px) scale(.99)}

/* nav links — animated underline (desktop only) */
.nav-link{position:relative}
.nav-link::after{content:"";position:absolute;left:.85rem;right:.85rem;bottom:.28rem;height:2px;border-radius:2px;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .32s cubic-bezier(.22,1,.36,1)}
.nav-link:hover::after,.nav-link.active::after{transform:scaleX(1)}
.nav-link:hover{background:transparent;color:var(--text)}
@media (max-width:991.98px){
    .nav-link::after{display:none}
    .nav-link:hover{background:var(--surface-2)}
}

/* theme toggle — playful spin + glow */
.theme-toggle:hover{transform:translateY(-2px) rotate(-18deg) scale(1.05);box-shadow:0 14px 30px -14px var(--accent-glow)}

/* chips lift a touch more crisply */
.skill-chip:hover,.about-tag:hover,.chip-accent:hover{transform:translateY(-3px)}

/* social + footer icons */
.footer-social a,.contact-actions .btn{transition:transform .3s var(--ease),color .3s,border-color .3s,box-shadow .3s}
.footer-social a:hover{transform:translateY(-3px) scale(1.08);color:var(--accent-ink)}

/* ---------- Hero portrait scroll-parallax target ---------- */
.portrait-stage{will-change:transform}
.float-chip{will-change:transform}

/* ---------- Hero 3D canvas — bolder than the 2D fallback ---------- */
.hero-canvas-3d{opacity:1!important;mix-blend-mode:normal}
[data-theme="dark"] .hero-canvas-3d{opacity:1!important}

/* ---------- Section title underline grow (scroll-driven) ---------- */
.section-title{position:relative;display:inline-block}
.section-head .section-title::after{content:"";position:absolute;left:0;bottom:-10px;height:3px;width:0;background:var(--grad);border-radius:3px;transition:width .9s cubic-bezier(.22,1,.36,1) .2s;box-shadow:0 0 14px var(--accent-glow)}
.section-head.in-view .section-title::after{width:64px}
.section-head.between{display:flex;flex-direction:row}

/* ---------- Card hover lift (sharpen existing cards) ---------- */
.featured-card,.project-card,.cert-card,.skill-card,.about-card{transform-origin:center;transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .35s}
.featured-card:hover,.project-card:hover,.cert-card:hover{transform:translateY(-8px);box-shadow:0 36px 64px -28px var(--accent-glow)}

/* ---------- Spotlight cursor-light on featured cards ---------- */
.featured-card{position:relative;overflow:hidden;isolation:isolate}
.featured-card::after{content:"";position:absolute;inset:0;background:radial-gradient(280px 280px at var(--mx,50%) var(--my,50%),rgba(96,165,250,.18),transparent 60%);opacity:0;transition:opacity .35s;pointer-events:none;z-index:1}
.featured-card:hover::after{opacity:1}

/* ---------- Marquee polish (hover pause) ---------- */
.hero-marquee:hover .marquee-track{animation-play-state:paused}

/* ---------- Reduced motion fallback ---------- */
@media (prefers-reduced-motion:reduce){
    .page-loader{display:none}
    .word-wrap > .word-inner,.line-wrap > .line-inner,.reveal-up{transform:none!important;opacity:1!important}
    .ap-cursor{display:none!important}
}
