
/* ===== effects ===== */
@keyframes fxUp { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes fxPop { from { opacity: 0; transform: scale(.6); } to { opacity: 1; transform: none; } }
@keyframes fxPulse { 0% { box-shadow: 0 0 0 0 rgba(199,178,153,.75); } 70% { box-shadow: 0 0 0 12px rgba(199,178,153,0); } 100% { box-shadow: 0 0 0 0 rgba(199,178,153,0); } }
/* page load: top section eases in */
.top .logo, .top .wordmark, .top .nav, .top .hero .eyebrow, .top .hero h1, .top .hero .lede, .top .hero .btns, .top .announce { animation: fxUp .8s cubic-bezier(.2,.7,.2,1) both; }
.top .wordmark { animation-delay: .08s; } .top .nav { animation-delay: .16s; }
.top .hero .eyebrow { animation-delay: .22s; } .top .hero h1 { animation-delay: .3s; } .top .hero .lede { animation-delay: .42s; }
.top .hero .btns { animation-delay: .52s; } .top .announce { animation-delay: .4s; }
.top .announce .a-card { animation: fxUp .7s cubic-bezier(.2,.7,.2,1) both; }
.top .announce .a-card:nth-of-type(1) { animation-delay: .6s; } .top .announce .a-card:nth-of-type(2) { animation-delay: .72s; } .top .announce .a-card:nth-of-type(3) { animation-delay: .84s; }
/* scroll reveal */
.js .reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0s); }
.js .reveal.in { opacity: 1; transform: none; }
/* tile hover (applied after reveal so transitions do not fight) */
.status-card, .t-card, .call-card, .chip, .note-row, .a-card { transition: transform .28s cubic-bezier(.2,.7,.2,1), box-shadow .28s, background-color .28s; }
.js .reveal.in.status-card:hover, .js .reveal.in.call-card:hover, .js .reveal.in.t-card:hover, .js .reveal.in.chip:hover, .js .reveal.in.note-row:hover,
.status-card:hover, .call-card:hover, .t-card:hover, .chip:hover, .note-row:hover { transform: translateY(-5px); box-shadow: 0 16px 34px rgba(46,44,43,.16); }
.a-card:hover { transform: translateY(-3px); }
.call-card.up:hover { border-color: var(--graphite); }
.status-card .badge { transition: transform .28s; } .status-card:hover .badge { transform: scale(1.08); }
/* buttons and links */
.pill { transition: transform .2s, filter .2s, box-shadow .2s; }
.pill:hover { transform: translateY(-2px); filter: brightness(1.08); box-shadow: 0 8px 18px rgba(0,0,0,.22); }
a.more, a.all, .sec-head a.link, a.u { display: inline-block; transition: transform .2s; }
a.more:hover, a.all:hover, .sec-head a.link:hover, a.u:hover { transform: translateY(-2px); }
.nav .links a { position: relative; transition: color .2s; }
.nav .links a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1.5px; background: var(--tan); opacity: 0; transition: opacity .25s; }
.nav .links a:hover::after { opacity: 1; }
/* process steps: line fades in, circles pop in one by one, live step pulses */
.js .stepper li .circ { opacity: 0; }
.js .stepper li::before { opacity: 0; transition: opacity .6s ease; transition-delay: calc(var(--i) * .14s + .2s); }
.js .stepper.in li .circ { animation: fxPop .5s cubic-bezier(.2,.9,.3,1.3) both; animation-delay: calc(var(--i) * .14s); }
.js .stepper.in li::before { opacity: 1; }
.js .stepper li > div { opacity: 0; transform: translateY(12px); transition: opacity .6s, transform .6s; transition-delay: calc(var(--i) * .14s + .1s); }
.js .stepper.in li > div { opacity: 1; transform: none; }
.js .stepper.in .current .circ { animation: fxPop .5s cubic-bezier(.2,.9,.3,1.3) both, fxPulse 2.2s ease-out 1.4s infinite; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .js .reveal, .js .stepper li .circ, .js .stepper li > div { opacity: 1 !important; transform: none !important; }
  .js .stepper li::before { opacity: 1 !important; }
}