:root{
  --fx-fast:150ms;
  --fx-control:210ms;
  --fx-reveal:560ms;
  --fx-hero:680ms;
  --fx-ease:cubic-bezier(.2,.72,.2,1);
  --fx-ease-emph:cubic-bezier(.16,1,.3,1);
  --fx-shadow:0 12px 26px rgba(16,43,40,.14);
  --fx-shadow-light:0 12px 26px rgba(0,0,0,.16);
}

/* System contract: effects never hide content unless JS has successfully initialized. */
.fx-ready .hero-copy > *{
  opacity:0;
  transform:translate3d(0,14px,0);
}
.fx-ready.fx-start .hero-copy > *{
  opacity:1;
  transform:none;
  transition-property:opacity,transform;
  transition-duration:var(--fx-hero);
  transition-timing-function:var(--fx-ease-emph);
}
.fx-ready.fx-start .hero-copy > :nth-child(1){transition-delay:40ms}
.fx-ready.fx-start .hero-copy > :nth-child(2){transition-delay:105ms}
.fx-ready.fx-start .hero-copy > :nth-child(3){transition-delay:170ms}
.fx-ready.fx-start .hero-copy > :nth-child(4){transition-delay:225ms}
.fx-ready.fx-start .hero-copy > :nth-child(5){transition-delay:275ms}
.fx-ready.fx-start .hero-copy > :nth-child(6){transition-delay:335ms}

.fx-ready .hero-art .sheet,.fx-ready .hero-art .cut{opacity:0}
.fx-ready .hero-art .sheet-a{transform:translate3d(22px,-14px,0) rotate(10deg) scale(.96)}
.fx-ready .hero-art .sheet-b{transform:translate3d(-18px,8px,0) rotate(-6deg) scale(.97)}
.fx-ready .hero-art .sheet-c{transform:translate3d(14px,18px,0) rotate(8deg) scale(.96)}
.fx-ready .hero-art .cut-a{transform:translate3d(-14px,10px,0) rotate(-18deg)}
.fx-ready .hero-art .cut-b{transform:translate3d(12px,-8px,0) rotate(17deg)}
.fx-ready.fx-start .hero-art .sheet,.fx-ready.fx-start .hero-art .cut{
  opacity:1;
  transition-property:opacity,transform;
  transition-duration:760ms;
  transition-timing-function:var(--fx-ease-emph);
}
.fx-ready.fx-start .hero-art .sheet-a{transform:rotate(10deg);transition-delay:90ms}
.fx-ready.fx-start .hero-art .sheet-b{transform:rotate(-6deg);transition-delay:165ms}
.fx-ready.fx-start .hero-art .sheet-c{transform:rotate(8deg);transition-delay:245ms}
.fx-ready.fx-start .hero-art .cut-a{transform:rotate(-18deg);transition-delay:315ms}
.fx-ready.fx-start .hero-art .cut-b{transform:rotate(17deg);transition-delay:370ms}

/* Only selected high-value Home moments reveal; no blanket section choreography. */
.fx-ready [data-fx-reveal]{
  opacity:0;
  transform:translate3d(0,18px,0);
}
.fx-ready [data-fx-reveal].is-visible{
  opacity:1;
  transform:none;
  transition:opacity var(--fx-reveal) var(--fx-ease),transform var(--fx-reveal) var(--fx-ease-emph);
}
.fx-ready [data-fx-reveal] .eyebrow-line{transform-origin:left center;transform:scaleX(.3);opacity:.55}
.fx-ready [data-fx-reveal].is-visible .eyebrow-line{transform:scaleX(1);opacity:1;transition:transform 520ms var(--fx-ease-emph) 110ms,opacity 360ms ease 110ms}

/* Immediate control feedback. Base button geometry/colors stay locked. */
.button{
  transition:transform var(--fx-fast) var(--fx-ease),box-shadow var(--fx-control) var(--fx-ease),filter var(--fx-control) ease;
}
.button:active{transform:translateY(0) scale(.985)}
.text-action{transition:text-underline-offset var(--fx-fast) ease,opacity var(--fx-fast) ease}
.text-action:active{opacity:.72}
a:focus-visible,button:focus-visible,summary:focus-visible{transition:outline-offset var(--fx-fast) ease;outline-offset:5px}

/* Product/service rows gain directional feedback without becoming cards. */
.service-index a{position:relative;transition:transform var(--fx-control) var(--fx-ease),background-color var(--fx-control) ease,padding-left var(--fx-control) var(--fx-ease)}
.service-index a::after{
  content:"→";position:absolute;right:4px;top:20px;font-weight:850;opacity:0;transform:translateX(-7px);
  transition:opacity var(--fx-control) ease,transform var(--fx-control) var(--fx-ease-emph)
}
.vehicle-link strong::after{content:" →";display:inline-block;opacity:.56;transform:translateX(0);transition:transform var(--fx-control) var(--fx-ease-emph),opacity var(--fx-control) ease}

/* Header disclosures get continuity instead of an abrupt pop. */
@media(min-width:781px){
  .fx-ready .services-mega{display:block;opacity:0;visibility:hidden;pointer-events:none;transform:translate3d(0,-7px,0);transition:opacity 180ms ease,transform 220ms var(--fx-ease),visibility 0s linear 220ms}
  .fx-ready .services-nav.is-open .services-mega{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition:opacity 180ms ease,transform 220ms var(--fx-ease),visibility 0s}
}
@media(max-width:780px){
  .fx-ready .site-nav{display:flex;opacity:0;visibility:hidden;pointer-events:none;transform:translate3d(0,-8px,0);transition:opacity 170ms ease,transform 210ms var(--fx-ease),visibility 0s linear 210ms}
  .fx-ready .nav-open .site-nav{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition:opacity 170ms ease,transform 210ms var(--fx-ease),visibility 0s}
  .fx-ready .services-mega{display:block;max-height:0;opacity:0;overflow:hidden;visibility:hidden;transition:max-height 320ms var(--fx-ease),opacity 180ms ease,visibility 0s linear 320ms}
  .fx-ready .services-nav.is-open .services-mega{max-height:900px;opacity:1;visibility:visible;transition:max-height 360ms var(--fx-ease-emph),opacity 220ms ease,visibility 0s}
}

/* One rare expressive moment: print geometry gains depth on hover-capable devices only. */
@media(hover:hover) and (pointer:fine){
  .button:hover{transform:translateY(-2px)}
  .button-primary:hover{box-shadow:var(--fx-shadow)}
  .button-light:hover,.button-outline-light:hover{box-shadow:var(--fx-shadow-light)}
  .button-quiet:hover{box-shadow:0 9px 20px rgba(16,43,40,.09)}
  .text-action:hover{text-underline-offset:8px}
  .service-index a:hover,.service-index a:focus-visible{transform:translateX(4px);padding-left:7px;background:rgba(21,60,54,.035)}
  .service-index a:hover::after,.service-index a:focus-visible::after{opacity:.8;transform:none}
  .vehicle-link:hover strong::after,.vehicle-link:focus-visible strong::after{opacity:1;transform:translateX(7px)}
  .hero-art{transition:transform 520ms var(--fx-ease-emph)}
  .hero:hover .hero-art{transform:translate3d(0,-4px,0)}
  .footer-contact-lines a strong{transition:color var(--fx-control) ease,transform var(--fx-control) var(--fx-ease)}
  .footer-contact-lines a:hover strong,.footer-contact-lines a:focus-visible strong{transform:translateX(3px)}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .fx-ready .hero-copy > *,
  .fx-ready [data-fx-reveal],
  .fx-ready [data-fx-reveal] .eyebrow-line,
  .fx-ready .hero-art .sheet,
  .fx-ready .hero-art .cut{
    opacity:1!important;transform:none!important;transition:none!important;animation:none!important
  }
  .fx-ready .hero-art .sheet-a{transform:rotate(10deg)!important}
  .fx-ready .hero-art .sheet-b{transform:rotate(-6deg)!important}
  .fx-ready .hero-art .sheet-c{transform:rotate(8deg)!important}
  .fx-ready .hero-art .cut-a{transform:rotate(-18deg)!important}
  .fx-ready .hero-art .cut-b{transform:rotate(17deg)!important}
  .button,.text-action,.service-index a,.service-index a::after,.vehicle-link strong::after,.site-nav,.services-mega,.footer-contact-lines a strong{transition:none!important}
  .button:hover,.button:active,.service-index a:hover,.service-index a:focus-visible,.hero:hover .hero-art,.footer-contact-lines a:hover strong{transform:none!important}
  .fx-ready .services-mega,.fx-ready .site-nav{transform:none!important}
}

/* Pressed state must override hover lift so activation feels immediate. */
.button:active,.button:hover:active{transform:translateY(0) scale(.985)}
@media(prefers-reduced-motion:reduce){.button:active,.button:hover:active{transform:none!important}}
