/* Gauge — Services motion layer (25 Oct 2026). Movement only; layout and content unchanged. */
#services.svm .section-heading{position:relative}
#services.svm .svm-rule{display:block;height:1px;width:96px;background:#b08d57;margin-top:22px;transform:scaleX(0);transform-origin:left;transition:transform 1.4s cubic-bezier(.77,0,.18,1) .35s}
#services.svm.svm-in .svm-rule{transform:scaleX(1)}
#services.svm .section-heading h2,#services.svm .section-heading .eyebrow,#services.svm .section-heading > p{opacity:0;transform:translateY(18px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
#services.svm .section-heading .eyebrow{transition-delay:.05s}
#services.svm .section-heading h2{transition-delay:.15s}
#services.svm .section-heading > p{transition-delay:.3s}
#services.svm.svm-in .section-heading h2,#services.svm.svm-in .section-heading .eyebrow,#services.svm.svm-in .section-heading > p{opacity:1;transform:none}
/* Picture: slow drift with scroll and a very slow breathing zoom. */
#services.svm .service-cover{overflow:hidden}
#services.svm .service-cover img{translate:0 var(--svm-par,0px);scale:1.07;animation:svm-breathe 14s ease-in-out infinite alternate;will-change:translate,scale}
@keyframes svm-breathe{from{scale:1.07}to{scale:1.13}}
/* Auto-advance timing line on the active service. */
#services.svm .service-options button{position:relative}
#services.svm .service-options button::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:#b08d57;transform:scaleX(0);transform-origin:left;pointer-events:none}
#services.svm .service-options button.svm-timing::after{animation:svm-progress var(--svm-ms,7000ms) linear forwards}
@keyframes svm-progress{to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){#services.svm *{animation:none!important;transition:none!important}#services.svm .section-heading *{opacity:1!important;transform:none!important}}
