/* utilities.css */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.hidden{display:none !important}
.mt-0{margin-top:0}.mt-2{margin-top:var(--sp-2)}.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}.mt-8{margin-top:var(--sp-8)}
.mb-4{margin-bottom:var(--sp-4)}.mb-6{margin-bottom:var(--sp-6)}
.maxw-60{max-width:60ch}
.text-center{text-align:center}
.flex{display:flex}.wrap{flex-wrap:wrap}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}
.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}

/* reveal animation */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.reveal.is-in{opacity:1;transform:none}

/* ============ site-wide motion & hover polish ============ */
@media (prefers-reduced-motion:no-preference){

  /* staggered cascade for grids, stat rows and process flows */
  .grid > .reveal:nth-child(2),.stats > .stat:nth-child(2),.flow > .flow__step:nth-child(2){transition-delay:.07s}
  .grid > .reveal:nth-child(3),.stats > .stat:nth-child(3),.flow > .flow__step:nth-child(3){transition-delay:.14s}
  .grid > .reveal:nth-child(4),.stats > .stat:nth-child(4),.flow > .flow__step:nth-child(4){transition-delay:.21s}
  .grid > .reveal:nth-child(5),.stats > .stat:nth-child(5),.flow > .flow__step:nth-child(5){transition-delay:.28s}
  .grid > .reveal:nth-child(6),.stats > .stat:nth-child(6){transition-delay:.35s}
  .grid > .reveal:nth-child(7){transition-delay:.42s}
  .grid > .reveal:nth-child(8){transition-delay:.49s}

  /* cards — deeper lift + gold aura + icon pop */
  .card{transition:transform .28s cubic-bezier(.2,.7,.2,1),box-shadow .28s ease,border-color .28s ease}
  .card:hover{transform:translateY(-6px);box-shadow:0 20px 44px rgba(0,0,0,.55),0 0 0 1px var(--gold-line);border-color:var(--gold-line)}
  .card__ico{transition:transform .28s cubic-bezier(.2,.7,.2,1),border-color .28s ease,color .28s ease,background .28s ease}
  .card:hover .card__ico{transform:translateY(-2px) scale(1.08) rotate(-3deg);border-color:var(--gold);color:var(--gold-bright)}
  .card__link .ico{transition:transform .25s ease}
  .card:hover .card__link .ico{transform:translateX(5px)}

  /* feature blocks */
  .feature{transition:transform .28s ease,border-color .28s ease,background .28s ease}
  .feature:hover{transform:translateY(-4px);border-color:var(--gold-line);background:#17171a}
  .feature__ico{transition:background .28s ease,color .28s ease,transform .28s ease}
  .feature:hover .feature__ico{background:var(--gold);color:#0B0B0C;transform:rotate(-4deg)}

  /* stat tiles */
  .stat{transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease}
  .stat:hover{transform:translateY(-4px);border-color:var(--gold-line);border-left-color:var(--gold-bright);box-shadow:0 14px 30px rgba(0,0,0,.45)}

  /* news / listing cards — media flourish */
  .newscard__img{overflow:hidden}
  .newscard__img .ico{transition:transform .35s cubic-bezier(.2,.7,.2,1)}
  .newscard:hover .newscard__img .ico{transform:scale(1.18) rotate(-6deg)}

  /* office & panel cards */
  .office,.panel,.model{transition:transform .28s ease,border-color .28s ease}
  .office:hover,.panel:hover,.model:hover{transform:translateY(-4px);border-color:var(--gold-line)}

  /* logo chips */
  .logo-chip{transition:transform .25s ease,border-color .25s ease,color .25s ease}
  .logo-chip:hover{transform:translateY(-3px);border-color:var(--gold-line);color:var(--gold)}

  /* primary/accent buttons — shine sweep */
  .btn--primary,.btn--accent{position:relative;overflow:hidden}
  .btn--primary::after,.btn--accent::after{content:"";position:absolute;top:0;left:-130%;width:55%;height:100%;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);
    transition:left .6s cubic-bezier(.2,.7,.2,1);pointer-events:none}
  .btn--primary:hover::after,.btn--accent:hover::after{left:150%}
  .btn:hover{transform:translateY(-2px)}
  .btn:active{transform:translateY(0)}

  /* animated gold underline on primary nav links (desktop) */
  @media (min-width:993px){
    .nav__link{position:relative}
    .nav__link::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:1px;background:var(--gold);
      transform:scaleX(0);transform-origin:left;transition:transform .28s cubic-bezier(.2,.7,.2,1)}
    .nav__item:hover .nav__link::after,.nav__link[aria-current]::after{transform:scaleX(1)}
  }

  /* process badge + flow step */
  .flow__step{transition:transform .28s ease}
  .flow__step:hover{transform:translateY(-4px)}
  .flow__badge{transition:transform .28s ease,box-shadow .28s ease,background .28s ease,color .28s ease}
  .flow__step:hover .flow__badge{background:var(--gold);color:#0B0B0C;box-shadow:0 0 0 8px rgba(201,162,39,.16)}

  /* testimonial + faq micro-interactions */
  .tnav__btn,.socials a,.to-top{transition:transform .2s ease,background .2s ease,color .2s ease,border-color .2s ease}
  .tnav__btn:hover,.socials a:hover{transform:translateY(-2px)}
  .faq__item summary{transition:color .2s ease,padding-left .2s ease}
  .faq__item summary:hover{color:var(--gold);padding-left:6px}

  /* count-up numbers hold their box while animating */
  .stat__num{font-variant-numeric:tabular-nums}
}

@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
}
