/* ===== Ryan Zuckerman CPA: motion system ===== */
:root{--rz-ease:cubic-bezier(.2,.75,.12,1);--rz-gold:var(--ab-accent,#E5B32C)}

/* Reading progress line */
.rz-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:99999;pointer-events:none;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--rz-gold),#f3d37a);box-shadow:0 0 10px rgba(229,179,44,.55)}

/* Header settles in */
.rz-motion .ab-site-header{animation:rzDrop .9s var(--rz-ease) both}
@keyframes rzDrop{from{opacity:0;translate:0 -14px}to{opacity:1;translate:0 0}}

/* Hero: hidden before JS runs (failsafe in head removes .rz-motion if JS never loads) */
.rz-motion .s-hero-eyebrow,.rz-motion .s-hero-text,.rz-motion .s-hero-ctas,.rz-motion .s-hero-title{opacity:0}
.rz-motion .s-hero-media{clip-path:inset(100% 0 0 0)}
.rz-hero-in .s-hero-title{opacity:1}
.rz-hero-in .s-hero-eyebrow{animation:rzUp .8s var(--rz-ease) .05s both}
.rz-hero-in .s-hero-text{animation:rzUp .9s var(--rz-ease) .55s both}
.rz-hero-in .s-hero-ctas{animation:rzUp .9s var(--rz-ease) .75s both}
.rz-hero-in .s-hero-media{animation:rzWipe 1.35s cubic-bezier(.77,0,.18,1) .15s both}
.rz-hero-in .s-hero-media img{animation:rzSettle 2s var(--rz-ease) .15s both}
@keyframes rzUp{from{opacity:0;translate:0 22px}to{opacity:1;translate:0 0}}
@keyframes rzWipe{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes rzSettle{from{scale:1.18}to{scale:1}}

/* Eyebrow gold rule draws in */
.rz-hero-in .s-hero-eyebrow{position:relative}

/* Word mask rise for headings */
.rz-w{display:inline-block;overflow:hidden;vertical-align:bottom;padding:0 .02em .12em;margin:0 -.02em -.12em}
.rz-w>span{display:inline-block;translate:0 110%;rotate:4deg;transform-origin:0 100%;transition:translate 1s var(--rz-ease),rotate 1s var(--rz-ease);transition-delay:calc(var(--w,0)*55ms + var(--d,0ms))}
.is-in .rz-w>span,.rz-hero-in .s-hero-title .rz-w>span{translate:0 0;rotate:0deg}

/* Generic reveal */
.rz-rv{opacity:0;translate:0 30px;filter:blur(5px);transition:opacity .9s var(--rz-ease),translate 1s var(--rz-ease),filter .9s var(--rz-ease);transition-delay:calc(var(--i,0)*90ms)}
.rz-rv.is-in{opacity:1;translate:0 0;filter:blur(0)}
.rz-rv.rz-done{transition-delay:0s;filter:none}
/* Cards rise with a slight tilt-back */
.rz-rv.rz-card{translate:0 46px;scale:.97}
.rz-rv.rz-card.is-in{translate:0 0;scale:1}
/* Pills pop */
.rz-rv.rz-pop{translate:0 0;scale:.7;filter:none;transition:opacity .5s ease,scale .7s cubic-bezier(.34,1.56,.64,1);transition-delay:calc(var(--i,0)*55ms)}
.rz-rv.rz-pop.is-in{scale:1}

/* Photo wipe */
.rz-img{overflow:hidden}
.rz-motion .rz-img.rz-pre{clip-path:inset(0 100% 0 0)}
.rz-img.is-in{animation:rzWipeX 1.3s cubic-bezier(.77,0,.18,1) both}
.rz-img.is-in img{animation:rzSettle 1.9s var(--rz-ease) both}
@keyframes rzWipeX{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}

/* ===== Hover ===== */
/* Buttons: lift + gold sheen sweep */
main .e-button-base,.ab-btn{position:relative;overflow:hidden;isolation:isolate;transition:transform .35s var(--rz-ease),box-shadow .35s var(--rz-ease),background-color .3s,color .3s}
main .e-button-base::after,.ab-btn::after{content:"";position:absolute;inset:-2px;z-index:-1;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.45) 48%,rgba(255,255,255,.1) 55%,transparent 70%);translate:-120% 0;transition:translate .8s var(--rz-ease)}
main .e-button-base:hover,.ab-btn:hover{transform:translateY(-3px);box-shadow:0 14px 28px -12px rgba(20,30,63,.55)}
main .e-button-base:hover::after,.ab-btn:hover::after{translate:120% 0}
main .e-button-base:active,.ab-btn:active{transform:translateY(-1px)}

/* Card spotlight that follows the cursor */
.rz-spot{position:relative;isolation:isolate;transition:transform .45s var(--rz-ease),box-shadow .45s var(--rz-ease),border-color .3s}
.rz-spot::before{content:"";position:absolute;inset:0;border-radius:inherit;z-index:0;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(229,179,44,.16),transparent 45%)}
.rz-spot:hover::before{opacity:1}
.rz-spot>*{position:relative;z-index:1}
.rz-spot:hover{transform:translateY(-6px)}
.s-areas-grid>.rz-spot:hover,.s-contact-grid>.rz-spot:hover,.ab-blog-grid .rz-spot:hover{box-shadow:0 22px 40px -22px rgba(20,30,63,.45)}

/* Service tiers: gold top rule grows, icon swings */
.s-services-grid>*{overflow:hidden}
.s-services-grid>*::after{content:"";position:absolute;left:0;top:0;height:3px;width:100%;background:var(--rz-gold);transform:scaleX(0);transform-origin:0 50%;transition:transform .6s var(--rz-ease);z-index:2}
.s-services-grid>*:hover::after{transform:scaleX(1)}
[class*="s-svc-"][class$="-ic"]{transition:transform .6s cubic-bezier(.34,1.56,.64,1),background-color .3s}
.s-services-grid>*:hover [class$="-ic"]{transform:rotate(-12deg) scale(1.12)}
.s-services-grid>*:hover [class*="-dash-"]{width:22px;transition:width .4s var(--rz-ease)}

/* Area cards: title shifts, county label turns gold */
.s-areas-grid>* h3{transition:color .3s,translate .4s var(--rz-ease)}
.s-areas-grid>*:hover h3{translate:4px 0}
.s-areas-grid>*:hover{border-color:var(--rz-gold)}

/* "Sounds familiar" pills */
.s-pain-tags>*{transition:background-color .3s,color .3s,border-color .3s,transform .4s cubic-bezier(.34,1.56,.64,1),box-shadow .3s;cursor:default}
.s-pain-tags>*:hover{background-color:var(--ab-navy,#1F2E5C) !important;color:#fff !important;border-color:var(--ab-navy,#1F2E5C) !important;transform:translateY(-3px) rotate(-1deg);box-shadow:0 10px 20px -12px rgba(20,30,63,.6)}

/* Checklist rows: icon nudges */
[class*="-rows"]>*>[class$="-ic"]{transition:transform .5s cubic-bezier(.34,1.56,.64,1)}
[class*="-rows"]>*:hover>[class$="-ic"]{transform:translateX(4px) scale(1.12)}

/* Stats: number lifts and gets a gold underline */
.s-stats-in>*{transition:transform .45s var(--rz-ease)}
.s-stats-in>* [class$="-num"]{background:linear-gradient(var(--rz-gold),var(--rz-gold)) 0 100%/0 3px no-repeat;transition:background-size .6s var(--rz-ease)}
.s-stats-in>*:hover [class$="-num"]{background-size:100% 3px}

/* Process dots pulse */
[class*="s-step-"][class$="-dot"]{transition:transform .5s cubic-bezier(.34,1.56,.64,1)}
[class*="s-step-"]:hover [class$="-dot"]{transform:scale(1.35)}

/* Photos zoom gently inside their frame */
.s-who-media,.s-bio-media{overflow:hidden}
.s-who-media img,.s-bio-media img{transition:scale 1.4s var(--rz-ease),filter .6s}
.s-who-media:hover img,.s-bio-media:hover img{scale:1.05}

/* Nav: underline grows from the centre */
.ab-nav .wp-block-navigation-item__label{position:relative}
.ab-nav .wp-block-navigation-item__label::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--rz-gold);transform:scaleX(0);transition:transform .45s var(--rz-ease)}
.ab-nav a:hover .wp-block-navigation-item__label::after,.ab-nav .current-menu-item .wp-block-navigation-item__label::after{transform:scaleX(1)}

/* Text links inside content: gold underline slides in */
main p a:not([class]),.ab-site-footer a:not([class]){background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .45s var(--rz-ease);text-decoration:none}
main p a:not([class]):hover,.ab-site-footer a:not([class]):hover{background-size:100% 1px}

/* Blog cards */
.ab-blog-grid img{transition:scale 1.2s var(--rz-ease)}
.ab-blog-grid .rz-spot:hover img{scale:1.05}

@media (hover:none){.rz-spot:hover,.s-pain-tags>*:hover{transform:none}}
@media (prefers-reduced-motion:reduce){
  .rz-progress{display:none}
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
}
