:root{--menu-duration:280ms;--contact-duration:220ms;--reveal-duration:460ms;--reveal-distance:18px}
.button{transition:transform 180ms var(--curve),background-color 180ms var(--curve)}
.arrow,.text-link span{transition:transform 220ms var(--curve)}
.material-choice{transition:background-color 220ms var(--curve)}
.choice-arrow{transition:transform 240ms var(--curve),background-color 220ms var(--curve)}
.need-options button{transition:background-color 220ms var(--curve),color 220ms var(--curve)}
.faq-list summary span{transition:transform 220ms var(--curve)}
.button:focus-visible .arrow,.nav-contact:focus-visible .arrow{transform:translate(2px,-2px)}
.button:disabled{cursor:default}
@media(prefers-reduced-motion:no-preference){
  .hero-line{animation:hero-entry 560ms var(--curve) 80ms both}
  .hero-line:nth-child(2){animation-delay:150ms}
  .hero-entry{animation:hero-entry 400ms var(--curve) both}
  .hero-copy>.eyebrow{animation-delay:0ms}
  .hero-description{animation-delay:220ms}
  .hero-actions{animation-delay:280ms}
  .hero-meta{animation-delay:320ms}
  .hero-visual{animation:hero-entry 600ms var(--curve) 100ms both}
  .hero-photo img{animation:field-settle 800ms var(--curve) 100ms both}
  .photo-note{animation:hero-entry 420ms var(--curve) 250ms both}
  @keyframes hero-entry{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
  @keyframes field-settle{from{transform:scale(1.025)}to{transform:scale(1)}}
  .motion-ready [data-reveal]{transition:opacity var(--reveal-duration) var(--curve),transform var(--reveal-duration) var(--curve)}
  .motion-ready [data-reveal]:not(.is-visible){opacity:0;transform:translateY(var(--reveal-distance))}
  .motion-ready .steps li:nth-child(2),.motion-ready .care-shell:nth-child(2){transition-delay:60ms}
  .motion-ready .steps li:nth-child(3),.motion-ready .care-shell:nth-child(3){transition-delay:120ms}
  .motion-ready [data-reveal]:focus-within{opacity:1;transform:none;transition:none}
  .material-detail.is-changing,.need-detail.is-changing{animation:detail-entry 280ms var(--curve)}
  .faq-answer{animation:detail-entry 220ms var(--curve)}
  #consultation-result:not([hidden]){animation:detail-entry 240ms var(--curve)}
  @keyframes detail-entry{from{opacity:.2;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
}
@media(max-width:767px){
  :root{--reveal-duration:350ms;--reveal-distance:12px}
  .mobile-nav{transition:opacity var(--menu-duration) var(--curve),transform var(--menu-duration) var(--curve)}
  .menu-toggle span{transition:transform 220ms var(--curve)}
  .mobile-nav>a{transition:opacity 240ms var(--curve),transform 240ms var(--curve)}
  .mobile-nav.is-open>a:nth-of-type(2){transition-delay:35ms}
  .mobile-nav.is-open>a:nth-of-type(3){transition-delay:70ms}
  .mobile-nav.is-open>a:nth-of-type(4){transition-delay:105ms}
  .mobile-nav.is-open>a:nth-of-type(5){transition-delay:130ms}
  .mobile-contact{transition:opacity var(--contact-duration) var(--curve),transform var(--contact-duration) var(--curve)}
}
@media(max-width:767px) and (prefers-reduced-motion:no-preference){
  .hero-line{animation-duration:420ms}
  .hero-entry{animation-duration:300ms}
  .hero-visual{animation-duration:450ms}
  .hero-photo img{animation:none}
  .photo-note{animation-duration:300ms}
}
@media(hover:hover) and (pointer:fine){.button:hover .arrow,.nav-contact:hover .arrow{transform:translate(2px,-2px) scale(1.04)}}
@media(hover:none){.button:hover .arrow,.nav-contact:hover .arrow{transform:none}.material-choice:hover{background:transparent}}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .motion-ready [data-reveal]{opacity:1!important;transform:none!important}
  .button:active,.button:focus-visible .arrow,.nav-contact:focus-visible .arrow,.button:hover .arrow,.nav-contact:hover .arrow,.text-link:hover span{transform:none}
  .hero-line,.hero-entry,.hero-visual,.hero-photo img,.photo-note{opacity:1;transform:none}
  .mobile-nav.is-open,.mobile-contact.is-visible{opacity:1;transform:none}
}
